【问题标题】:Formula / math calculations for moving a player forward based on direction facing根据朝向向前移动玩家的公式/数学计算
【发布时间】:2018-04-29 16:21:07
【问题描述】:

我的数学很差,需要帮助推动玩家前进以获得我正在为游戏开发的工具,但我拥有的唯一信息是玩家面对的方向,我需要将其转换为 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 的某个百分比。

寻求任何对这类东西有诀窍的人的帮助,非常感谢任何帮助。任何形式的伪代码和帮助表示赞赏,谢谢大家!

【问题讨论】:

  • 查找正弦和余弦
  • 另一种极坐标到笛卡尔坐标的转换。
  • 将 M 乘以 60 得到度数,顺便说一句,或乘以 pi/3 得到弧度。

标签: math formulas algebra calculation


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    相关资源
    最近更新 更多