我正在搞一些 Javascript 游戏开发,试图创建一个简单的框架来绘制运动场(用于体育游戏)。
我的数学很烂,真的需要这个算法的帮助。
假设我有这些变量:
GAME_WIDTH = 1024;
FIELD_LENGTH = 170;
PLAYER_SPEED = 4.72;
update_duration = 30;
大写的前 3 个是可变的,这意味着它们可以由用户设置。最后一个本质上是我的“更新”代码在 1 秒内被调用的频率。
GAME_WIDTH 是像素,FIELD_LENGTH 是米,PLAYER_SPEED 是玩家可以跑完 40 米的秒数。
我想做的是获取这 4 个变量并将其转化为玩家在 1 个“更新”中可以移动的像素数。我从来没有真正做过任何游戏开发,我在学校也从来没有注意过几何或三角学,所以我在这里完全不知所措。
谁能帮忙?
编辑
这是一个 2D 自上而下的游戏,因此该算法仅处理 X(从右到左)坐标。
最佳答案
您需要接受“单位转换”的精美艺术。 http://oakroadsystems.com/math/convert.htm
例如,12 英寸 = 1 英尺。因此,您可以像这样将英寸转换为英尺:
48 英寸 *(1 英尺/12 英寸)= 4 英尺。 “英寸”抵消,只留下英尺。
所以我们想要的答案是每次更新的像素数。 (update_duration 是毫秒吗?假设是这样...)
(40 meters / 4.72 seconds)
* (1024 pixels / 170 meters)
* (1 second / 1000 ms)
* (30 ms / 1 update) = 1.53140578 pixels / update
或者如果 30 是更新/秒,同样的想法:
(40 meters / 4.72 seconds)
* (1024 pixels / 170 meters)
* (1 second / 30 updates = 1.70156198 pixels / update
(我可能误解了你的常量的含义......但这就是技术。这个概念是这些分数中的每一个,a/b,都等于“1”。
当你用完整的类分数风格写它时,这看起来更好,所有的取消都变得完美。非常有用的技术。
关于算法帮助,数学很烂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7410755/