やっていること
こんにちは、下記写真のようにmixamoでアニメ付けしたキャラクターをカメラの前に配置しています。
問題点
カメラが近付くと、顔のボーンだけがカメラに注目して目線を追ってくれるようなプログラムを書いています。
問題点は、アニメーションなしの状態では首のボーンが動きますが、アニメーションを付けるとボーンが動かず、大元にアニメーションに依存してしまいます。
原因
デバックから考えられる原因としては、アニメーションの再生が回転・位置を初期化してしまい、スクリプトの実行を毎フレーム上書きしていることが原因だと考えられます。
補足
ちなみにLookAt関数などでは上手く動作しましたが、そちらはカクッとした動きでカメラに吸い付きます。
今回は顔をスムーズにカメラの方に向かせたいのでQuaternion.Slerpで首とカメラを補間してくれるものを適応したいです。
こちらに関して、お答えを知っている方がいらっしゃればご教授お願い致します。
コード
[SerializeField] public GameObject mainCamera = GameObject.FindGameObjectWithTag("MainCamera"); [SerializeField] public GameObject Model; public GameObject Head; Transform neck; Animator animator; void Start() { neck = _animator.GetBoneTransform(HumanBodyBones.Head); } void LateUpdate() { //アニメーションなしでは補間される。アニメーション有りでは補間せずに毎フレーム上書きされてしまう。 Quaternion lookOnLook = Quaternion.LookRotation(mainCamera.transform.position - neck.transform.position); neck.rotation = Quaternion.Slerp(neck.transform.rotation, lookOnLook, Time.deltaTime* 10f); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/21 04:21