1

我想通过模拟游戏手柄输入以相同的最大恒定速度向任何方向移动我的角色。

通常对于 8 个方向的移动,我会根据方向的类型将玩家的速度乘以一个常数。

ORTHOGONAL_SPEED = 2
DIAGONAL_SPEED = 1.414

我所拥有的是来自模拟输入的当前轴的小数。

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 回答