Ваш вопрос очень неясен -.-
но ЕСЛИ вы пытаетесь сбросить камеру на (0,0,0), сохраняя все игровые объекты в одном и том же относительном положении к ней , вы можете попробовать:
var localToCamera = Camera.main.transform.worldToLocalMatrix;
var obj = GameObject.FindSceneObjectsOfType(typeof(GameObject));
foreach (var o in obj)
{
var go = (o as GameObject);
go.transform.FromMatrix(localToCamera * go.transform.localToWorldMatrix);
}
_
EDIT:
что должен делать код UGLY выше:
он будет сканировать все объекты GameObject и перемещать их таким образом, что если вы установите камеру в положение (0,0,0) и в сторону (0,0,1), они останутся в том же положении и ориентации относительно камера.
обратите внимание, что после выполнения этого кода сама камера БУДЕТ переставлена в положение (0,0,0) и направлена в сторону (0,0,1), поскольку
Camera.main.transform.worldToLocalMatrix * localToWorldMatrix == идентичность
РЕДАКТИРОВАТЬ :
Я не могу поместить этот код в комментарии, потому что он слишком длинный.
попробуйте
// code from the top of my head here, syntax or function names might not be exact
var forward = arcamera.transform.forward;
forward.y = 0;
arcamera.transform.rotation = Quaternion.LookDirection(forward);
// now the camera forward should be in the (x,z) plane
UnityARSessionNativeInterface.GetARSessionNativeInterface().SetWorldOrigin(arcamera.transform);
// since you did not tilt the horizontal plane, hopefully the plane detection still detected vertical and horizontal planes