3D碰撞检测和响应

时间:2016-08-09 15:02:02

标签: algorithm lua 3d collision-detection

我最近在视频游戏中发现了一个很棒的white paper 3D冲突,并希望实现该算法,但我遇到了一些我自己似乎无法解决的问题。该算法使用一个球体对象作为玩家/实体,并对世界进行搜索,以便将碰撞算法简化为球形三角形,然后不进行渲染。这听起来不错,但我的碰撞似乎是零星的,我看不出问题在哪里。 Here是我的代码的完整工作示例(需要LOVE游戏框架)。通常我会在这里发布一些代码片段,但坦率地说,有太多相关代码可以提供帮助。如果您没有或无法使用LOVE运行游戏,则可以使用任何存档管理器打开.love文件(它只是一个zip文件)。相关文件是:

  • /libs/cpml/modules/collision.lua(完全碰撞算法)
  • /libs/cpml/modules/intersect.lua(各种交叉算法,包括球形三角形)
  • /libs/cpml/modules/mesh.lua(几个网格辅助函数)
  • /resources/collision.cpp(白皮书中的原始代码)

如果有人能推荐的东西更有效或更容易,我也对其他算法持开放态度。在游戏过程中,我在过去的一年中实施了几种碰撞算法,并且它们都以某种方式存在缺陷。我真的希望得到一个可靠的碰撞系统,所以我可以把精力集中在其他事情上,比如游戏机制。

编辑:这是一个动作中碰撞(和失败)的视频。您将看到玩家对象经常穿过世界,红色碰撞点位于奇怪的地方等等。

https://www.youtube.com/watch?v=BX4Hdh-bQ5U

0 个答案:

没有答案