我正在尝试制作一个游戏,其中您使用w,s,a,d键移动,并且我希望角色相对于自己移动。
它不是在X或Y方向上向上或向下移动,而是向前或向后移动或从左到右转动。有点像《坦克大战》游戏的动作。
如果有人对如何执行此操作有任何想法,请告诉我!
答案 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;
然后,当用户按下一个键时,您想要修改angle
和speed
变量。