我正在开发一个小型2D游戏引擎。角色具有绘画方法,当前可以执行以下操作:
- 根据角色的速度等计算角色的新位置。
- 更新碰撞网格单元**
- 在新位置绘制角色
**我创建了一个碰撞网格以减少相交检查的次数
现在我想到的用于检测碰撞的基本算法是:
For Each Character
Check intersection with characters in surrounding 8 cells
我可以简单地将此代码放在paint方法中。但是,这是我预期的问题。
假设两个字符A和B位于碰撞网格中的相邻单元格中。现在,按照上述算法,在字符A的迭代中,它将检测到它与B碰撞。在字符B的迭代中,它将检测到它与A碰撞。
但是我有一个想法,当A检测到它与B发生碰撞时,应该通知B它与A发生碰撞。当有两个以上的actor发生碰撞时,这样可以节省很多比较。但我不确定如何处理。我认为应该检查游戏循环内的碰撞,而不是每个角色都检查碰撞。
这种方法正确吗?您如何处理此类问题?我自己想到了碰撞网格。碰撞网格逻辑还有其他选择吗?