1

同じ最大一定速度でアナログゲームパッド入力を使用して、キャラクターを任意の方向に動かしたいと考えています。

通常、8 方向の移動の場合、プレイヤーの速度に方向の種類に基づいた定数を掛けるだけです。

ORTHOGONAL_SPEED = 2
DIAGONAL_SPEED = 1.414

私が持っているのは、アナログ入力からの現在の軸の 10 進数です。

joy1_axisDir1 = a number between -1(left) and 1(right)
joy1_axisDir2 = a number between -1(up) and 1(down)

これは、画面上でキャラクターを移動するために今持っているものです。

ルアコード:

if joy1_axisDir1 ~= 0 then
  player.x = player.x + (player.move_speed * joy1_axisDir1)
end
if joy1_axisDir2 ~= 0 then
  player.y = player.y + (player.move_speed * joy1_axisDir2)
end

これにより、斜めの動きが他のどの方向よりも著しく速くなります。

プレイヤーの移動速度を制限する方向をどのように考慮に入れるのですか?

4

1 に答える 1

2

ピタゴラスの定理を使用して速度ベクトルの大きさを求め、X 速度と Y 速度をその大きさで割り、それぞれに必要な移動速度を掛けます。

これは基本的なベクトル数学です。ベクトルを正規化し、それをスカラーで乗算して、そのスカラーの大きさと元のベクトルの方向を持つベクトルを取得します。

于 2012-05-26T02:37:56.833 に答える