gpt4 book ai didi

c# - XNA 二维碰撞检测

转载 作者:行者123 更新时间:2023-11-30 18:39:23 25 4
gpt4 key购买 nike

我想知道在哪里可以找到一些关于如何编写一些干净的碰撞检测代码的不错的资源 Material 。

我是 XNA 编程的新手,对我想如何编写我的游戏有一个大致的了解,但我在碰撞检测的想法上遇到了严重的麻烦。这让我难以置信。

我知道您可以使用二维边界框类。但在那之后,我被困住了。我不想检查一个对象是否与游戏中的每个对象发生碰撞,所以我想知道是否有人可以为我指明正确的方向,以获取有关该问题的一些文献或其他内容。

最佳答案

这在很大程度上取决于游戏的规模和实现。对象是如何组织的?游戏是按 map 组织的,还是只有一个屏幕?哪些物体会与其他哪些物体发生碰撞?

如果游戏规模足够小,您可能根本不需要担心。

如果不是,请考虑:

  • 将游戏分成不同的 map ,其中一张 map 上的对象只会与同一 map 上的其他对象发生碰撞

  • 按类型组织敌人列表,这样您就可以只检查正确种类的对象。 (即:抛射物不检查抛射物等...)。例如,我使用以下字典,以便我可以只检查特定类型的对象,或者只检查属于特定派系的生物:

    private readonly Dictionary<Type, List<MapObject>> mTypeObjects = 
    new Dictionary<Type, List<MapObject>>();

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

关于c# - XNA 二维碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9918051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com