キーを押した方向にキャラクターを移動させたい
バイオハザードのようなリモコン操作ではなく、キーを押した方向に向かってキャラクターを走らせます。
下記サイトのソースコードを参考にさせていただきました。
強火で進め - 進行方向にキャラクターの向きを変える
PlayerControll.cs
private Animator motion;
public float run_speed;
void Start () {
motion = GetComponent<Animator>();
}
void Update()
{
Vector3 target_dir = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
//Run
if(target_dir.magnitude > 0.1){
//体の向きを変更
transform.rotation = Quaternion.LookRotation(target_dir);
//前方へ移動
transform.Translate(Vector3.forward * Time.deltaTime * run_speed );
//アニメーション用
motion.SetBool("Run", true);
}
else
{
motion.SetBool("Run", false);
}
}
滑らかに方向転換させたい
これでキーを押した方向へキャラクターが移動するようになりました。
しかし、反対方向へ移動するときの方向転換がキビキビとしすぎています。
ですので、線形補完を使って滑らかにキャラクターの向きを変えるようにします。
前述のソースコードの //体の向きを変更 の箇所を下記コードに置き換えます。
//体の向きを変更
Quaternion rotation = Quaternion.LookRotation(target_dir);
transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * smooth);
smoothはどれだけ滑らかに向きを変えるかの値です。
値を増やすほどキビキビと方向転換します。今回は10くらいにしました。
public float run_speed;のと同じように宣言しておけばインスペクタ上で変えられます。