我想听听你对这个问题的建议......
为简单起见,我将只考虑 x 轴。
对位置 10 的对象进行成像,其宽度也为 10 个单位,每秒向前移动 100 个单位,并且由于低帧,每次更新时它应该移动 80 个单位。
在调用第一次更新后,它的位置现在是 90,并且在位置 120 处还有另一个相同大小的对象。
下一次更新,会将对象移动到位置 170。考虑到我需要实现碰撞检测,计算更新之前或之后的碰撞,没有一个会起作用。
现在来一个简单的问题...
在这种情况下该怎么办?
执行以下操作:
Position start = destinationPos - currentPos;
for (int i; i < start; i++)
if (IsColliding(movingObj.Position + i, staticObj))
//do the colliding stuff here
我不喜欢这个解决方案,在这种情况下可能没问题,但是如果你有 x、y、z 和很多移动物体怎么办?
我认为另一个很好的解决方案,但我不确定它是否可靠,是让另一个线程在一个循环中执行所有这些计算。
这个线程就像一个无限循环,在每次迭代中,我都会计算elapsedTime
我认为会非常小的值并继续移动并计算碰撞,而渲染线程会慢得多,它会得到当前状态的对象,只是渲染它。
你们怎么看?