はじめに
上のようにプレイヤーの移動方向に向きを変更したいときってありませんか?
(モデルは適当に作ったので若干気持ち悪くて申し訳ないです)
今回はそのやり方を書いていきたいと思います。
仕組み
移動方向に向きを変更するにはQuaternion.LookRotation(Vector3 forward)がキーとなります。
これは
・Vector3(0, 0, 1)を前方向とする
・引数にforward(向けたい方向)をとる
という仕組みになっています。
コード
これをコードにすると
private Vector3 latestPos; //前回のPosition private void Update() { Vector3 diff = transform.position - latestPos; //前回からどこに進んだかをベクトルで取得 latestPos = transform.position; //前回のPositionの更新 //ベクトルの大きさが0.01以上の時に向きを変える処理をする if (diff.magnitude > 0.01f) { transform.rotation = Quaternion.LookRotation(diff); //向きを変更する } }
この画像でいう左側が
Vector3 diff = transform.position - latestPos;
この画像の右側が
transform.rotation = Quaternion.LookRotation(diff);
に相当します。