前提・実現したいこと
RigidBodyを使用したキャラクター移動において
カクカクとした向き変更ではなく、360度滑らかにキャラの向きを変えられるようにしたい
8方向移動で方向転換をする際にパッパッと向きが変わるのではなく、ぬるりと向きが変わるようにしたいです
発生している問題・エラーメッセージ
カクカクとした向きの変更になってしまう
該当のソースコード
using UnityEngine; using System.Collections; public class CharacterMove : MonoBehaviour { float inputHorizontal; float inputVertical; Rigidbody rb; float moveSpeed = 3f; Vector3 lastmov_f; Animator anim; void Start() { rb = GetComponent<Rigidbody>(); anim = this.gameObject.GetComponent<Animator>(); } void Update() { inputHorizontal = Input.GetAxisRaw("Horizontal"); inputVertical = Input.GetAxisRaw("Vertical"); } void FixedUpdate() { // カメラの方向から、X-Z平面の単位ベクトルを取得 Vector3 cameraForward = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized; // 方向キーの入力値とカメラの向きから、移動方向を決定 Vector3 moveForward = cameraForward * inputVertical + Camera.main.transform.right * inputHorizontal; // 移動方向にスピードを掛ける。ジャンプや落下がある場合は、別途Y軸方向の速度ベクトルを足す。 //rb.velocity = moveForward * moveSpeed + new Vector3(0, rb.velocity.y, 0); //Debug.Log(moveForward); rb.AddForce(new Vector3(inputHorizontal, 0, inputVertical) + moveSpeed * moveForward * 2, ForceMode.Impulse); if (moveForward != new Vector3(0, 0, 0)) { anim.SetFloat("InputMagnitude", 1.0f); } else { anim.SetFloat("InputMagnitude", 0.0f); } // キャラクターの向きを進行方向に if (moveForward != Vector3.zero) { transform.rotation = Quaternion.LookRotation(moveForward); } } }
補足情報(FW/ツールのバージョンなど)
Unity 2019.3.0f6
回答1件
あなたの回答
tips
プレビュー