【Unity】斜めの移動が速くなってしまう

2023年10月3日

Joyスティックを使う、または、キーボードで上キーと右キーの同時押しなど斜めに移動すると、真横や真上へに移動に比べ速度が速くなってしまいます

要因

Joyスティックの値の制限が、-1から+1までなので、斜め上に倒すと、長さは√2になってしまいます
(1.41くらい)

対応

移動方向のベクトルを正規化し、ベクトルの長さが1になるようにします。これにより、斜めの移動速度が他の方向の速度と同じになります

ベクトルの大きさを最大1にします

ベクトルの正規化サンプル

移動方向のベクトルを正規化する方法のサンプルコード

// 移動方向を示すベクトル
Vector3 moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));

// ベクトルを正規化
moveDirection.Normalize();

// 正規化されたベクトルを使用して移動する
transform.position += moveDirection * moveSpeed * Time.deltaTime;

上記のコードでは、まずInput.GetAxis()関数を使用して、水平方向と垂直方向の入力を取得します。次に、Vector3クラスを使用して、これらの値を移動方向のベクトルに結合します。

その後、Normalize()関数を使用して、移動方向のベクトルを正規化し、長さを1にします。最後に、正規化されたベクトルを使用して、移動速度moveSpeedをかけ、時間Time.deltaTimeを考慮した上で、現在の位置に加算することで、プレイヤーを移動させます。

このように、ベクトルを正規化することで、斜めの移動速度を他の方向の速度と同じにすることができます。

Unity,学習,小技バトル

Posted by hidepon