前提・実現したいこと
UnityJapan様のCinemachineTIPSの動画を参考に、キャラクターをCinemachineやNavMeshなどを用いて三人称視点で操作できるようにしたいです。
発生している問題
キャラクターを操作して移動させるのですが、移動が終わって動きを止めた直後、カメラの方向に関係なくZ軸方向に向きを回転してしまいます。
Animator animator; Quaternion targetRotation; void Awake() { TryGetComponent(out animator); targetRotation = transform.rotation; } // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { var horizontal = Input.GetAxis("Horizontal"); var vertical = Input.GetAxis("Vertical"); var horizontalRotation = Quaternion.AngleAxis(Camera.main.transform.eulerAngles.y, Vector3.up); var velocity = horizontalRotation * new Vector3(horizontal, 0, vertical).normalized; var speed = Input.GetKey(KeyCode.LeftShift) ? 2 : 3; var rotationSpeed = 600 * Time.deltaTime; if (velocity.magnitude > 0.5f) { transform.rotation = Quaternion.LookRotation(velocity, Vector3.up); } transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, rotationSpeed); animator.SetFloat("Speed", velocity.magnitude * speed, 0.1f, Time.deltaTime); }
補足
Unity2020.1.4f1で作成しています。キャラクターモデルはmixamoで提供されている3Dモデルを使用しています。
参考動画に基づいて,平面にはNavMeshをベイクしRigidBodyは使用していません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/28 13:34