打败游戏空间管理?

Gol*_*les 2 game-engine

我正在为Beat'em Up游戏制作我的2D引擎(Castle Crashers是我称之为Beat'em Up或Brawler类型的游戏).

我将支持2D精灵和2D粒子发射器.现在这一切都在引擎中完成.但我想提出一个问题,我想征求意见:

这是关于"空间"管理,我认为这是做某事,如图所示:

替代文字http://img337.imageshack.us/img337/9162/spacingprototype1.png

我的想法是制作一个网格(空间哈希或网格),我的粒子发射器/ 2D精灵将存在的地面.在我的图片中,我列举了从1到N的这个插槽,(不必是35,它只是为了显示目的).我的想法是按照从0到N(从桶0到桶N)的顺序绘制"GameElements"(Sprites/Emitters),然后我将让它们在屏幕上正确显示(从前到后).

我知道这可以通过比较每个元素的下Y轴并执行"快速排序"来完成,但让网格可以让我以更好的方式执行碰撞检测,如果我做了像A*这样的实现某种AI,它也可以帮助我.

Evi*_*ity 5

如果您希望对需要相互测试的对象数量进行某种优化,您可能需要考虑使用四叉树 http://en.wikipedia.org/wiki/Quadtree

我们的想法是将屏幕划分为4个节点,将所有项目放在它们所属的节点中,然后将刚刚创建的节点划分为另外4个节点,如果有精灵/项目/其他需要测试的话.继续这样做,直到达到节点中的特定大小或数量的项目.

然后,您可以询问顶级节点是否包含您要测试的项目.然后,该节点将询问子节点是否包含该项目,而该项目又将询问其子项.这样就可以跳过屏幕的很大一部分(如果它位于子00中,你可以跳过子01,10和11).然后,您将获得一个项目列表,您可以在需要时执行更具体的碰撞检测.

如果你要让它看起来像,它看起来有点像这样:

替代文字http://geodata.ethz.ch/geovite/tutorials/L2GeodataStructuresAndDataModels/en/images/quadtree.gif