游戏中的地形和碰撞

| 我正在尝试创建一个新游戏,其中车辆可以沿着地面行驶,但也可以使用推进器暂时空降。 我是游戏编程的新手,但是我擅长使用Java,C,C ++等进行编码,因此我认为这不应该成为问题(游戏的第一版是Java)。我的问题是,我是从头开始,无法想像地形成为障碍的方法,因此车辆不会从中掉落。我如何让他们可能遭受跌倒伤害? 过去,人们已经将我引导到副本岛资源,因为它已经包含了该副本,并且我看到了整个碰撞系统,但是到目前为止,我还无法理解它,我希望有人愿意帮我一下 谢谢 罗夫哈     
已邀请:
您正在使用什么来开发游戏?引擎还是图形库?基本上有三个级别(我想考虑一下):图形库,图形引擎和游戏引擎。 图形库几乎与 您可以得到的较低级别:OpenGL或 DirectX。当你想画画 您的地形,您将绘制为 三角形网格,并定义 这些三角形的顶点等 图形引擎是最顶层 其中。这些示例(对于C ++ 至少)是Ogre3D,Horde3D和 违规。他们会照顾一个 许多较低级别的命令,以及 让您专注于更多图形 具有更高的观点。 游戏引擎几乎需要 关心与图形相关的任何东西。 这些示例(还是C ++)是 Unity和UDK。他们通常可以做 很多游戏编程 您。你可能会画你的 建模程序中的地形 (3dsmax等),将其导出到某些 格式,然后引擎会对其进行修改 并确切地知道如何处理它。 我已经玩过这三个文件,并发现最有趣的图形库。但是,他们可能会花费最长的时间来制作游戏。它们还涉及更多的数学(线性代数)。 至于与地形的碰撞检测。您必须了解组成该地形的三角形。如果您使用的是游戏引擎,则应该能够将地形的网格物体和角色的网格物体存储在某种“场景节点”中,它将自动处理碰撞检测。但是,如果您自己处理所有事情,则有许多流行的算法可以做到这一点: 边界框:即使角色的形状像人(或动物等)的形状,也可以将它们视为框,并检查该框何时与构成地形的网格的三角形相交。 Bounding Sphere:将您的角色视为一个球体,因为球体是否碰撞容易得多。您只需检查“球体半径”与“从球体中心到另一个网格的距离”即可。然后,如果该球体发生碰撞,则将其分解为更小的球体,可以更准确地表示您的角色。您从那里递归进行3或4次迭代,或者按照您想要代表角色的精度进行递归。但是请记住,游戏中的所有内容都必须快快快,因此这就是限制递归的原因。 关于边界球碰撞检测的优秀文章 我已经编写了一个示例OpenGL程序,该程序基本上使一个由边界框表示的角色绕着需要碰撞检测的地形行走。如果您对它的工作方式更感兴趣,请告诉我。 您可以通过以下几种方法处理跌落伤害: 如果角色没有飞行,则可以使用简单的状态机。他们进入空中后,将状态更改为“ IN AIR \”,并且在游戏外观运行时,设置一个计时器并跟踪它们在空中停留多长时间。如果它们在空中停留的时间太长,则根据它们的存在时间来计算不同程度的损坏。 一种更准确的方法是跟踪角色的y速度。这对现实生活是准确的。如果您跌落缓慢,则跌倒损坏没有任何意义。如果您跌倒得很快,那么走得越快,受伤就会越严重。因此想出了一种将下降速度与破坏联系起来的方程。然后,一旦它们落地,将状态机更改回\“ ON_GROUND \”并检查fall_speed(可能是y_velocity)。     
您可能还想尝试Nvidia PhysX,除了它的名字所暗示的(您想对汽车物理学建模,这让我想到了它),某些实用程序还提供了很多功能,例如碰撞检测,四元数数学等 我将它与开放式图形引擎Ogre(到目前为止;-)...配合使用,使得在OpenGL-DirectX和Linux-Microsoft之间的切换相对容易),该引擎也有很多功能。 由于您已经知道如何编写代码,因此我建议将以上内容视为可行的方法,而不是替代方法,而是开放源代码;这样您就只需要重塑所需的车轮零件即可。     

要回复问题请先登录注册