何时检测游戏循环中的冲突

我的游戏循环使用固定的时间步进行“物理”更新,比如说每20毫秒。 在这里,我移动的对象。 我尽可能经常画框。 我计算出一个介于0和1之间的值来表示物理刻度的比例,该刻度在绘制之前是完整的并且在先前和当前物理状态之间进行插值。 假设帧速率高于物理更新速率,则会导致更平滑的游戏。

我目前正在物理更新例程中进行碰撞检测。 我想知道它应该发生在内插的绘制例程中的位置匹配用户看到? 碰撞可能会导致爆炸。

我假设你正在使用类似于本文所描述的方法修复您的Timestep! 。 我建议你不要把你的物理/碰撞和渲染混在一起。 像现在一样在更新中进行碰撞。 该插值状态是简单地用于平滑渲染的近似值 。 即使你检查插值状态的碰撞,它也不会帮助视觉效果。

这里是一个例子(部分来自该文章的评论):

假设你在物理引擎的每个时间步中遵循这个scheme:

  1. 整合
  2. testing碰撞
  3. 回应碰撞

考虑一个从墙上弹起的球形成V形path,并在第二个时间步骤检测/解决碰撞:

  1. 球在碰撞之前,视觉球在Vpath的左侧
  2. 球撞墙,碰撞解决,球现在反弹,并在V的右侧

在这两个状态之间进行线性插值,您将在Vpath的中间渲染球,使得碰撞path看起来更平坦。 在插入状态下检查碰撞将不会产生碰撞,因此将无助于纠正视觉效果。 只有改善视觉效果的方法是缩短时间。