我知道如何正常做到这一点,假设up为0度
X += Speed * Math.Cos(angle);
Y += speed * Math.Sin(angle);
但是我不知道怎么做,如果我假设它实际上是270度,而右边是0度。 (我正在使用Game Maker,他们决定正确的是0度而不是向上)
我该怎么做呢?我可以忽略一个简单的解决方案,但在数学方面我并不是最聪明的。
答案 0 :(得分:0)
X + =速度* Math.Cos((角度+ 270)%360);
那就是我要做的。因为你将图形逆时针旋转270度。
答案 1 :(得分:0)
你所要做的就是调整角度。您将North测量为0 degrees
,此计划将北测量为270 degrees
。要解决此问题,只需减去它们所关闭的270
即可。这样的事情应该足够了:
# angle is the programs offset version (North=270)
# corrected_angle is your fixed version (North=0)
corrected_angle = angle-270; # mod by 360 if you it to be non-negative
X += Speed * Math.Cos(corrected_angle);
Y += speed * Math.Sin(corrected_angle);
[注意:如果(1,0)和(0,1)不在您预期的位置,那么您需要调整的不仅仅是角度。此外,假设您在程序中顺时针方向移动时角度增加,并且您希望角度随着顺时针方向的增加而增加。 ]
答案 2 :(得分:0)
如果您实际上正在使用GameMaker,那么它们具有名为lengthdir_x和lengthdir_y的函数,这些函数完全符合您的要求(以度数和角度为单位查找长度)。