Сначала найдите относительное вращение relativeRot
между камерой и плеером, такое, что playerRotation == cameraRotation * relativeRot
.
Умножая обе стороны слева на Inverse(cameraRotation)
, мы знаем, что тогда Inverse(cameraRotation) * playerRotation == relativeRot
:
Quaternion relativeRot = Quaternion.Inverse(vrCamera.transform.rotation) * transform.rotation;
Затем определите угол поворота камеры, который вам нужен. Возможно, используйте Quaternion.LookRotation
в том направлении, в котором вы хотите видеть камеру:
Vector3 desiredCameraLookAtPoint;
Vector3 desiredCameraLookDirection = desiredCameraLookAtPoint - vrCamera.transform.position;
Quaternion desiredCameraRot = Quaternion.LookRotation(desiredCameraLookDirection);
Наконец, решите и назначьте вращение игрока, используя относительное вращение и желаемое вращение камеры:
transform.rotation = desiredCameraRot * relativeRot;