在我的2D游戏中,我有静态和动态对象.可以有多个摄像头.我的问题:确定与当前相机的视图矩形相交的对象.
目前,我只是遍历所有现有对象(不关心动态或静态)并使用相机视图对其进行AABB检查.这对于非常动态的对象来说似乎是可以接受的,但对于静态对象来说却是不可接受的,在静态对象中可能存在数以万计的静态对象(静态级别几
我已经研究了可以解决我的问题的多个数据结构:
这是我考虑的第一件事,但问题是它会迫使我的场景具有固定的大小.(可接受静态,但不适用于动态对象)
看起来不错,但重新平衡它的开销似乎对许多动态对象来说太大了.
这里的主要问题是,如果你大量使用相机缩小,必须查询大量不存在的空间散列桶,导致性能低下.
总的来说,我对这个问题的良好解决方案的标准是:
动态大小:解决方案不得导致场景大小受限,或者需要大量重新计算才能调整大小
良好的查询性能(适用于相机)
对非常动态对象的良好支持:处理不断变化位置的对象所需的计算应该是好的:
一次我游戏中动态对象的最大合理数量可能是5000.考虑它们每一帧都改变它们的位置.考虑到频繁的插入和删除,是否有一个数据结构可以更快,而不是每帧比较物体的AABB和相机?