Delta时间由于浮点而导致比较问题

我正在制作Game Maker Studio中的游戏:2,并使用Delta Time 。 我了解它是什么,如何得到它,以及如何使用它,但是当我需要进行包含由Delta Time修改的值的比较时,我遇到了一些问题。

例如:我的游戏中的物品正在以每秒2像素的速度沿x轴移动。 在60帧。 项目移动的速度由Delta Time修改,项目的x坐标有效地为'x = 2 * delta'。

现在,我想检查物品的x坐标何时到达某个点,即“if(x =”轴上的特定点“){做点什么}。

我正在寻找的“轴上的特定点”是一个整数(十进制后没有数字),但是当使用增量时间时,由于调整其相对于变化速度的位置,x坐标通常总是微不足道的量的每一帧。 它不是'x = 12',而是'x = 12.00387562'或'x = 11.99943345'。

现在,我认为在每一步结束时只要绕过“x”就可以解决这个问题,但是我也有一种唠叨的感觉,我可能会在面前丢掉一些东西。 其中一个原因是,如果我在每一帧都围绕x坐标,这是不是对Delta Time做出的很多调整没有意义? 是否有一个(最好简单和/或简洁)的方法来比较查找小数点后一定范围内的数字值?

所有的帮助和洞察力是赞赏的。

你的感觉是对的,不要在每一帧都舍入你的x ,因为你需要这个值作为累加器,它应该保持一致的模拟精度。 相反,当需要将x与一个整数进行比较时,将x作为临时variables进行舍入。

 if(round(x) =="specific spot on axis") {do something} 

如果您需要检查x是否仅仅通过了现场,则可以在不舍入的情况下进行比较:

 if(x > "specific spot on axis") {do something} 

你也可以使用floor方法,它总是“倒圆角”,永远不会“up”。 这可以给你一个更一致的行为:如果你还没有达到它,你不在“轴上的特定位置”。 期。

 if(floor(x) =="specific spot on axis") {do something} 

免责声明:我不是GMS的专家。