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

标签 javascript three.js collision physijs cannon.js

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

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

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

谢谢!

最佳答案

开发人员 Chanderprall(认为我没看错)使 Physijs 成为一个易于使用的物理插件,包含三个。他在 ammo.js 之上构建了它并且 确实 有一个实验性的 cannon.js 分支(不幸的是现在只支持原始形状)我guess 和正常的一样工作。

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

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

关于javascript - 在 three.js 游戏中使用 cannon.js 进行碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235255/

相关文章:

javascript - 来自高度图三个js的平滑地形

three.js - 3d-force-graph 和 Three.js - 将几何发光/大气 Material /简单纹理添加到各个节点和节点组

javascript - 动态缩放堆叠在另一个对象上的对象

javascript - 解析dom元素的更有效方法?

javascript - 如何使用 Document.execCommand() 获取执行的命令列表

Javascript 字符串密码/加密和隐藏 key

c++ - OpenGL 中的 3D 碰撞

javascript - 如何将 FontAwesome 放入 Inner.html

zend-framework - 曾: parameter collision

ios - Swift 2. 对象之间的 UILabel 碰撞不起作用