获取基于角度的x和y运动,排序

时间:2016-03-11 23:48:36

标签: java c# math game-maker

我知道如何正常做到这一点,假设up为0度

X += Speed * Math.Cos(angle);

Y += speed * Math.Sin(angle);

但是我不知道怎么做,如果我假设它实际上是270度,而右边是0度。 (我正在使用Game Maker,他们决定正确的是0度而不是向上)

我该怎么做呢?我可以忽略一个简单的解决方案,但在数学方面我并不是最聪明的。

3 个答案:

答案 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的函数,这些函数完全符合您的要求(以度数和角度为单位查找长度)。