【Unity】斜めの移動が速くなってしまう
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を考慮した上で、現在の位置に加算することで、プレイヤーを移動させます。
このように、ベクトルを正規化することで、斜めの移動速度を他の方向の速度と同じにすることができます。
ディスカッション
コメント一覧
まだ、コメントがありません