根据面向的方向移动玩家前进的公式/数学计算

Formula / math calculations for moving a player forward based on direction facing

我的数学很差,需要帮助推动玩家前进以获得我正在为游戏工作的工具,但我唯一拥有的信息是玩家面对的方向,我需要将其转化为 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,所以我只需将 5 添加到 y 坐标。但是如果玩家面对的是接近西边的 1.2,我会在 X 和 Y 中添加什么来使它们准确地向前移动,大概我会在 x 中添加 5,在 y 中添加 5 的某个百分比。

正在寻求对此类事情有诀窍的任何人的帮助,我们将不胜感激。感谢伪代码和任何形式的帮助,谢谢大家!

如果xy是当前坐标,dir是你1-6个单位的当前方向,amount是移动的距离,你的新坐标是

angle = dir * pi / 3
newx = x + amount * sin(angle)
newy = y + amount * cos(angle)

如果您真的只想要减量,只需从公式中删除 xy

请注意,这使用了三角函数。大多数计算机语言都需要角度以弧度为单位,因此第一行将给定的方向角转换为弧度。

另请注意,您的方向角值方向和增加 x 和 y 坐标的方向是非标准的。因此,那些了解三角函数的人可能会对使用 cos 与 x 坐标和 sin 与 y 坐标感到困惑,因为这些不是标准的。但这就是您的情况所需要的。正如@HighPerformanceMark 刚刚在评论中指出的那样,您应该考虑将方向角以及 x 和 y 坐标更改为更标准的值。他建议的北 0 度和东 90 度是导航标准。三角学中使用的另一个标准是东为 0 度或弧度,北为 pi/2 弧度或 90 度。