如何使对象相对于自身移动

时间:2018-10-08 15:42:22

标签: processing move

我正在尝试制作一个游戏,其中您使用w,s,a,d键移动,并且我希望角色相对于自己移动。

它不是在X或Y方向上向上或向下移动,而是向前或向后移动或从左到右转动。有点像《坦克大战》游戏的动作。

如果有人对如何执行此操作有任何想法,请告诉我!

1 个答案:

答案 0 :(得分:0)

您可以采用几种不同的方法来解决此问题:

  • 如果您只处理直角,例如如果向右转总是使您向右旋转90度,那么您可以使用枚举来跟踪您所面对的方向。当您按向左或向右时,修改该枚举,并在向上或向下按时使用该枚举选择要移动的方向。

  • 如果需要处理更多角度,例如如果向右转仅向右转1度,则您需要使用一些基本的三角函数来跟踪用户面对的方向。

对于第二种方法,您应该研究polar coordinates。与其直接在运动中使用X和Y坐标,不如使用角度和速度。然后cos()sin()函数将根据这些值为您提供x和y。

类似这样的东西:

float deltaX = cos(angle) * speed;
float deltaY = sin(angle) * speed;
player.x += deltaX;
player.y += deltaY;

然后,当用户按下一个键时,您想要修改anglespeed变量。