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