在three.js游戏中使用cannon.js进行碰撞检测

时间:2014-06-16 00:20:02

标签: javascript three.js collision physijs cannon.js

我正在使用three.js处理某些事情,我需要一种方法来处理对象之间的冲突。我正在考虑使用cannon.js,因为它支持我需要的原语,但我并不总是特别需要/想要任何物理开销(比如用于检测击中特定敌人的子弹),我主要是我想在很多情况下用它来进行碰撞检测,因为我对写下我自己的通用碰撞检测引擎的兔子洞不感兴趣。

基本上我要问的是,是否有一种相对简单的方法来使用cannon.js,或者某些其他javascript物理库来测试对象/对象对象/地形碰撞并确定对象是否为/没有碰撞。如果我能得到像穿透深度,碰撞的正常等等更好的东西。

如果我真的希望将东西与我的three.js代码紧密有效地集成,那么我会更好地使用physijs吗?它似乎也有我需要的东西,但其主页上的演示表现似乎相当糟糕。

谢谢!

1 个答案:

答案 0 :(得分:1)

开发人员Chanderprall(我认为我做对了)使Physijs成为一个易于使用的物理插件。他在ammo.js之上构建了它,并且确实有一个实验cannon.js分支(不幸的是现在只支持原始形状),我觉得它的工作方式与正常形状相同。
>
就我个人而言,我认为只有在处理物理实时物理时才会使用整个库,对象具有动态位置等。如果你只想要一些没有物理引擎的碰撞检测,只需使用{ {1}},可以检测网格(使用其边界框计算)是否使用THREE.Raycaster方法相交。您可以快速调整它以使用一些聪明的代码检测对象进入另一个对象的距离。

http://webmaestro.fr/collisions-detection-three-js-raycasting/