4

IHi 私はカメラの回転方法に取り組んできました。

マウス入力を使用してカメラを回転させようとしています。水平方向の回転を ax、y 平面 (私のボード) に平行にし、垂直方向の回転を特定の角度 (40 度から -40 度のようなもの) に制限する必要があります。

クォータニオンを使用してカメラを回転させます。

これまでの私のコード

float angle = (mouseX_Current - mouseX_ActionStart) * 0.25f;
Quaternion horizontalRotationQuat = Quaternion.AngleAxis(angle, Vector3.up);

angle = (mouseY_Current - mouseY_ActionStart) * 0.25f;
Quaternion verticalRotationQuat = Quaternion.AngleAxis(angle, Vector3.right);

Camera.main.transform.rotation *= (horizontalRotationQuat * verticalRotationQuat);

私の問題は、これらのマウス関連の回転を現在のカメラの向きの四元数に追加することにより、カメラが見ている平面(x、y)に平行ではなくなることです。

これらのマウス関連の回転を追加した後、カメラのクォータニオンに追加する補正クォータニオンを作成しようとしましたが、正しいものを見つけることができないようです。

Quaternion currentOrientationQuat = Camera.main.transform.rotation;

Quaternion corretionQuat = new Quaternion(0.0f, 0.0f, - currentOrientationQuat.z, currentOrientationQuat.w);

Camera.main.transform.rotation *= corretionQuat;

誰かがこれについて私を助けることができれば、私はとても感謝しています. ありがとう。

私の第一言語ではなく、英語で申し訳ありません。

4

1 に答える 1

3

別の方法を使用してこれを解決しました

float angle = (mouseX_Current - mouseX_ActionStart) * 0.25f;
Camera.main.transform.Rotate(0.0f, 0.0f, angle, Space.World);

angle = (mouseY_Current - mouseY_ActionStart) * 0.25f;
Camera.main.transform.Rotate(angle, 0.0f, 0.0f, Space.Self);

それがどれほど簡単にできるかを見た後、愚かな気分になりました。これには四元数さえ必要ありませんでした。

于 2013-10-24T21:10:13.147 に答える