2

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

基本上我要问的是是否有一种相对简单的方法来使用 cannon.js,或者可能是其他一些 JavaScript 物理库来测试对象/对象对象/地形碰撞并确定对象是否发生碰撞。如果我能得到像穿透深度、碰撞法线等这样的东西,那就更好了。

如果我真的希望事物与我的three.js 代码紧密有效地集成,我会更好地使用physijs 吗?它似乎也有我需要的东西,但是从其主页上的演示来看,性能似乎很差。

谢谢!

4

1 回答 1

1

开发者 Chanderprall(我认为我说得对)使 Physijs 成为一个易于使用的物理插件,包含三个。他在上面构建了它ammo.js并且确实有一个实验cannon.js分支(不幸的是现在只支持原始形状)我猜它就像正常的一样工作。

就个人而言,我认为整个库只应在处理实时物理时使用,其中对象具有动态位置等。如果您只是想在没有物理引擎的情况下进行一些碰撞检测,只需使用THREE.Raycaster,它可以检测是否有网格(使用它们的边界框计算)使用该intersectObjects方法相交。您可以使用一些巧妙的代码快速调整它以检测一个对象进入另一个对象的距离。

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

于 2015-11-16T23:23:58.640 回答