次のように実装された一人称カメラコントローラーがあります。
float rotSpeed = 20.0f;
xRotation += deltaPos.y * rotSpeed * Time.deltaTime;
yRotation += deltaPos.x * -rotSpeed * Time.deltaTime;
while(xRotation > 360.0f) xRotation -= 360.0f;
while(xRotation < 0.0f) xRotation += 360.0f;
while(yRotation > 360.0f) yRotation -= 360.0f;
while(yRotation < 0.0f) yRotation += 360.0f;
cam.transform.rotation = Quaternion.Euler(xRotation, yRotation, 0);
カメラが 3D 空間のターゲットにスナップできるようにしたいと考えています。
transform.LookAt(target) を使用すると、カメラ コントローラーはビューを元の場所にスナップするだけで、LookAt() の呼び出し後にカメラの回転から xRotation と yRotation を設定することはできません。 Z 回転でクォータニオンを生成することがあります。
では、カメラをあるターゲットに向けるのに必要な X と Y の回転をどのように見つけることができるでしょうか?