我一直在开发一个基本的 3D XNA 游戏。到目前为止,我已经设法将各种角色模型加载到更大的关卡/世界模型上。我加入了一些基本控件,允许用户/玩家在世界各地移动其中一个角色——甚至使用 BoundingSphere/BoundingBox 和其他角色模型实现了一些碰撞检测。
然而,角色模型(目前)被卡在 Y 轴上的固定位置,所以我的世界实际上只是一个平面供他们滑过。
我现在要做的是实现一种类似重力的力,它可以让角色随着地形的流动而上升和下降。我花了几个小时在谷歌搜索(徒劳无功)以某种方式检查我的角色的边界范围与世界的实际网格之间的详细碰撞。我发现的文章似乎都在解释如何使用 sphere 和 box 方法,或者实现一些外部物理引擎(对于我想要实现的目标,所有这些似乎都非常精细)。
所以我的问题是双重的 -
- 首先,我是否以最好的方式处理这个问题?我的世界只有一个大型模型?
- 其次,是否有一种相对简单的方法来检查我需要的碰撞类型,使用 XNA 库本身,或者不需要我引入全新物理层的其他库。
注意。我要检查冲突的模型是:Microsoft.Xna.Framework.Graphics.Model
编辑:
我还应该提到,我不是在创建一个单一的关卡,而是一个游戏引擎,它可以与从数据库加载的各种关卡一起工作。出于这个原因,我不想单独/手动定义关卡的约束。理想情况下,我希望从数据库中加载我的单个网格并能够按原样检测与它的碰撞,或者自动从网格数据中计算出约束/边界区域。