我在数学方面非常糟糕,需要帮助推动玩家前进为我的游戏工作,但我唯一的信息是玩家面临的方向,我需要将其转换为x和y坐标增量或减量。
因此,如果我们说M是玩家面对的方向,M从0.00000变为5.9999999,然后回到0.000,以下是正确的:
0 = North
1.5 = West
3 = South
4.5 = East
如果我想将玩家向北移动,我会做y +金额,南方将是y - 金额,如果我想向东移动玩家,我会做x - 金额,而西方将是x +金额
因此,当面向绝对方向时,向前移动玩家很容易,例如M为0所以我只是在y坐标上添加5。但是如果玩家面对的是差不多西方的1.2,那么我会向X和Y添加什么来准确地向前移动它们,大概我会将5加到5,而将5加到y。
寻找任何有这种东西诀窍的人的帮助,非常感谢任何帮助。 Psuedo代码和任何类型的帮助表示赞赏,谢谢大家!
答案 0 :(得分:1)
如果x
和y
是当前坐标,则dir
是1-6个单位中的当前方向,amount
是移动的距离,您的新坐标是
angle = dir * pi / 3
newx = x + amount * sin(angle)
newy = y + amount * cos(angle)
如果您真的只想要减量,只需从公式中删除x
和y
。
请注意,这使用三角法。大多数计算机语言需要角度为弧度,因此第一行将给定的方向角度转换为弧度。
另请注意,方向角度值的方向以及增加x和y坐标的方向都是非标准的。因此,那些知道trig的人可能会因使用x坐标cos
和y坐标使用sin
而感到困惑,因为这些不是标准的。但这就是你需要的东西。正如@HighPerformanceMark在评论中指出的那样,您应该考虑将方向角度和x和y坐标更改为更标准的值。他建议的那个,北方0度,东方90度,是导航的标准。在三角学中使用的另一个标准是东方和π/ 2弧度为0度或弧度,北方为90度。