XNA 2D 碰撞检测

3
我在想,我能在哪里找到一些关于如何编写清晰的碰撞检测代码的好资源材料。
我对XNA编程还比较新,对于如何编写我的游戏有一个大致的理解,但是我在碰撞检测方面遇到了严重的困难。这让我感到很困惑。
我知道可以使用2D边界框类。但是在那之后,我就卡住了。我不想检查每个游戏中的对象是否与每个其他对象相撞,所以我想知道是否有人能够指点我正确的方向,提供一些相关文献或其他资料。
2个回答

0

0
这要取决于你的游戏规模和实现方式。物体是如何组织的?游戏是按地图划分的,还是只有一个屏幕?哪些物体会与其他物体发生碰撞?
如果游戏规模足够小,也许根本不需要担心。
如果不是,可以考虑以下几点:
  • 将游戏分成不同的地图,其中一个地图上的对象仅与同一地图上的其他对象发生碰撞

  • 按类型组织敌人列表,以便您只能对正确类型的对象进行检查(即:把项目不与项目对比等)。例如,我使用以下字典,以便仅针对某种类型的对象或属于某个派别的生物进行检查:

    private readonly Dictionary<Type, List<MapObject>> mTypeObjects = 
    new Dictionary<Type, List<MapObject>>();
    
    private readonly Dictionary<FACTION, List<MapObject>> mFactionCreatures =
    new Dictionary<FACTION, List<MapObject>>();
    
  • 为了实现最大效率但更具挑战性的实现方式,您可以使用空间划分,其中对象按“扇区”组织,使您可以立即排除远处的对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接