为什么我运行 lua 脚本每次都得到不同的值?

我在Love2D中创建了一个简单的2D场景,其中有一个正方形会下落直到达到一定点停止。问题在于,这个正方形每次停止的位置都略有不同,但没有用户输入或修改的代码。

这是我的lua代码:

变量playY显示玩家高度,但它每次停止的值都不同。

为什么会这样呢?

点赞
用户869951
用户869951

我没有使用过 love2d,所以我可能完全错了,但基于我使用各种 GUI 的经验:我猜测 Love2d 在空闲事件循环中处理这些调用,因此您不能保证每次运行程序时时间步骤是恒定或相同的,这将导致位置序列每次都不同(打印它们,你会看到)。除非 love2d 具有计时器函数,在 GUI 中发生什么事情都能保持相当准确(这将令人惊讶),否则您将必须满足 love2d 支持的精度(0.5%,不错)。这意味着您不能使用 if something == 456 这样的条件,因为您可能会错过它,最好使用范围。

2014-05-10 18:01:10
用户2643137
用户2643137

如前所述,dt 只与游戏的刷新率一致。将此值与速度相乘可实现平滑的游戏体验。

如果这是一个玩家对象,并希望 y 坐标停留在456处,你可以这样写:

if playY > 456 then
    playY = 456
end

你可以基本保证每次 playY 坐标都会停留在 456 处,因为它会将玩家强制移回那个位置。

2014-06-05 19:17:09