機能紹介:
このゲームは、キャラクターがカメラを見ている機能、つまり、カメラの回転に応じてキャラクターが頭と目を回転させる機能を実現します。
原理の紹介:
通常、カメラはキャラクターを中心に回転しますが、カメラを固定してキャラクターが回転するとルックアット機能が非常におかしくなり、大きな角度で回転すると頭がねじれやすくなります。
少し考えてみると、カメラを回して役割を変えても、相対的な動きに違いはないようです
コード lookAt 関数が記述されているため、実際のコード ロジックは、キャラクターの目の中心をピボット ポイントとしてカメラが回転し、特定のベクトルとモジュロ長後の点の移動になります。
カメラの回転角度が制限値を超えると、注視点がすぐに補間され、目の前の目標点に移動します
その後、カメラが大きな角度で後ろを向いても、正面の目標点には影響しません。
ただし、カメラが動かずキャラクターが動く場合、補間移動に使用される目標点は常に移動します(ワールド座標)。
そのため、カメラとキャラクターの正の方向との間の角度が制限を超えると、頭が歪んでしまいます。
解決策を考える:
カメラが動かずにキャラクタを回転させる場合、補間動作のターゲット ポイントをキャラクタのサブオブジェクトとして設定すると、相対動作をオフセットできるため、大きな角度偏差の後でも補間動作ポイントが維持されます。キャラクターの正の方向、および他のターゲットのポイントは、localposition と localRotation を使用して計算されます。