はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】プレイヤーの移動方向に向きを変更するやり方

はじめに

f:id:hanaaaaaachiru:20190220180626g:plain

上のようにプレイヤーの移動方向に向きを変更したいときってありませんか?
(モデルは適当に作ったので若干気持ち悪くて申し訳ないです)

今回はそのやり方を書いていきたいと思います。

仕組み

移動方向に向きを変更するにはQuaternion.LookRotation(Vector3 forward)がキーとなります。
これは
・Vector3(0, 0, 1)を前方向とする
・引数にforward(向けたい方向)をとる
という仕組みになっています。

f:id:hanaaaaaachiru:20190220182013p:plain

コード

これをコードにすると

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); //向きを変更する
    }
}

f:id:hanaaaaaachiru:20190220183249p:plain


この画像でいう左側が

Vector3 diff = transform.position - latestPos;


この画像の右側が

transform.rotation = Quaternion.LookRotation(diff);


に相当します。