gpt4 book ai didi

game-engine - Beat em' up 游戏空间管理?

转载 作者:行者123 更新时间:2023-12-02 07:54:34 24 4
gpt4 key购买 nike

我正在为 Beat'em Up 游戏制作我的 2D 引擎(CaSTLe Crashers 就是我所说的 Beat'em Up 或 Brawler 类游戏)。

我将支持 2D Sprite 和 2D 粒子发射器。现在这一切都在引擎中完成。但是遇到一个问题想请教一下:

这是关于“空间”管理的,我想的是做一些如图所示的事情:

alt text http://img337.imageshack.us/img337/9162/spacingprototype1.png

我的想法是制作一个网格(Spatial Hash 或 Grid ),我的粒子发射器/2D Sprite 将所在的地面。在我的图片中,我从1到N枚举了这个插槽,(不一定是35,只是为了展示目的)。我的想法是按从 0 到 N 的顺序绘制“GameElements”(Sprites/Emitters),(从 bucket 0 到 bucket N),然后我会让它们在屏幕上正确重叠显示(从后到前)。

我知道这可以通过比较每个元素的较低 Y 轴并也执行“快速排序”来完成,但是拥有网格可以让我以更好的方式执行碰撞检测,如果我做类似 A * 实现某种人工智能,它也可以帮助我。

最佳答案

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

想法是将屏幕分成 4 个节点,将所有项目放在它们所属的节点中,然后将您刚刚创建的节点分成另外 4 个,如果那里有 Sprite /项目/任何需要测试的东西.继续这样做,直到达到某个节点中项目的特定大小或数量。

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

如果你想让它可视化,它看起来有点像这样:

alt text http://geodata.ethz.ch/geovite/tutorials/L2GeodataStructuresAndDataModels/en/images/quadtree.gif

关于game-engine - Beat em' up 游戏空间管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1658776/

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