LookAt 機能を記録するための問題点のアイデア

機能紹介:

このゲームは、キャラクターがカメラを見ている機能、つまり、カメラの回転に応じてキャラクターが頭と目を回転させる機能を実現します。

原理の紹介:

通常、カメラはキャラクターを中心に回転しますが、カメラを固定してキャラクターが回転するとルックアット機能が非常におかしくなり、大きな角度で回転すると頭がねじれやすくなります。

少し考えてみると、カメラを回して役割を変えても、相対的な動きに違いはないようです

コード lookAt 関数が記述されているため、実際のコード ロジックは、キャラクターの目の中心をピボット ポイントとしてカメラが回転し、特定のベクトルとモジュロ長後の点の移動になります。

カメラの回転角度が制限値を超えると、注視点がすぐに補間され、目の前の目標点に移動します

その後、カメラが大きな角度で後ろを向いても、正面の目標点には影響しません。

ただし、カメラが動かずキャラクターが動く場合、補間移動に使用される目標点は常に移動します(ワールド座標)。

そのため、カメラとキャラクターの正の方向との間の角度が制限を超えると、頭が歪んでしまいます。

解決策を考える:

カメラが動かずにキャラクタを回転させる場合、補間動作のターゲット ポイントをキャラクタのサブオブジェクトとして設定すると、相対動作をオフセットできるため、大きな角度偏差の後でも補間動作ポイントが維持されます。キャラクターの正の方向、および他のターゲットのポイントは、localposition と localRotation を使用して計算されます。

おすすめ

転載: blog.csdn.net/l17768346260/article/details/131148701