1


我有一个由 x,y 定义的点和一个由航向、速度定义的向量。我正在尝试以“速度”的距离沿该向量移动点 x,y。以下是我目前正在使用的代码:

self.x += self.speed * cos(self.heading);
self.y += self.speed * sin(self.heading);

航向可以是整圈内的任何角度 - 0 到 2π(0-360 度)。问题是上面的代码:

  • 仅在角度为 0->270 时沿 x 或 y 轴移动
    • 例如,当头像面向右上角(相对 45 度)时,它会直线向上移动。
  • 角度为 270->360 时完全不动

航向、速度、X 和 Y 都是双倍的,并且航向是通过用户触摸下角的方向键来报告的。我知道航向是正确的,因为头像旋转到正确的方向,这只是我遇到问题的实际运动。

感谢您的帮助
- 克里斯

4

1 回答 1

2

直接向上移动是sin(90),不是sin(45)。所以你有一些问题。

sin(90) == 1这只会继续将您的速度添加到 y 而不会添加到 x 因为cos(90) == 0)。

于 2010-12-22T01:48:44.183 回答