1

我一直在计划一个独立游戏项目。我会为你总结一下,这样我就可以直接回答这个问题了。

它完全是通过 Visual Studio 使用最新版本的 XNA 完成的。希望把它放在360和PC上,但我现阶段只是在寻找面向PC的解决方案。

这是一款 2D 横向卷轴射击游戏(想想 Metroidvania 风格,甚至是泰拉瑞亚)。它最终将包括一个游戏内地图编辑器,其中地图基于图块 (16x16)。将有向上和向下滚动。我希望在开发地图编辑器中实现瓦片层(开发地图编辑器的原因是它将严重倾向于以内容为中心,因此会有很多地图)。

物理瓷砖将非常简单,只有两种主要类型。方块瓷砖,它只是一个实心瓷砖,以及有角度的瓷砖,它们是具有角色可以行走的倾斜度的瓷砖。我强烈考虑完全放弃有角度的瓷砖,但还不确定。

角色/NPC 动作会很简单。左右移动、跳跃、坠落、飞行(使用适当的物品/情况)、传送。一切都是静态的,不需要动态物理。只有基本重力。当一个角色离开瓷砖的边缘时,它会掉下来。当它跳跃并且上面有一块瓷砖时,它会停下来并回落。当它到达一个突出的瓷砖/墙壁时,它不能进一步移动,除非它跳过或飞行。所有基本的东西。

弹丸也会受到重力的影响,在某些情况下,弹丸可能会在飞行中被操纵,但不需要重物理。一些射弹也会移动角色(想想一个简单的“推动”机制)。

所以这里有一个问题:我正处于开始研究运动和碰撞检测的阶段,但我无法让自己走上解决这些问题的道路。我需要确定角色、瓷砖和弹丸何时发生碰撞的方法。鉴于我所说的关于我所追求的风格和我正在使用的基于图块的系统,我能否获得一些建议+链接到其他人在类似情况下使用的一些经过验证的真实碰撞检测方法?我最需要的是灵感。

只是一个简短的说明,我有几年的程序员经验,所以我不是一个完全的新手:)

4

2 回答 2

2

我在某个时候从事一个 GIS 项目,我遇到了一个类似的问题,我用 QuadTrees 解决了这个问题,请查看此链接以获得很好的解释和示例。

于 2012-05-27T07:59:15.060 回答
0

如果它是您所说的基于图块的地图,那么图块将存储在二维数组中。因此,您可以通过地图数组中的 x,y 坐标快速访问图块。

我对四叉树的建议是只检查实体附近的图块。

例如,您有一个玩家实体向右移动(+x 方向),而不是向上或向下移动。您可以碰撞的瓷砖数量将只是少数瓷砖之一。特别是您右侧的瓷砖。如果你移动得足够快,也许更靠右。

上述仅检查相邻图块的解决方案是解决此问题的一种非常常见的方法,并且可以适用于许多用例。这也比上面提到的四叉树查找更快更简单。

于 2017-01-05T06:29:16.840 回答