扩展 Physijs.Mesh

Extending Physijs.Mesh

我正在使用 Physijs 创建一个简单的 fps。如果没有 Physijs,我会创建一个 Player 对象并使用下面的代码来扩展 THREE.Mesh class.

function Player() {
    THREE.Mesh.apply(this, arguments);
    ...
}
Player.prototype = Object.create(THREE.Mesh.prototype);

然后我将实例化一个 Player 并将相机添加到其中以获得第一人称视角。然而,我必须为 Player 编写所有的碰撞检测程序,这样他就不会从地板上掉下来。我可以使用 new Physijs.BoxMesh 作为地板,但是玩家呢?如何使用 Physijs 创建一个应用了物理学的 'Player' class?我尝试了类似... Physijs.Mesh.apply(...)... 和 Object.create(Physijs.Mesh.prototype) 的方法,但这不起作用。

感谢您的任何反馈。

要在网格之间进行碰撞检测,physi.js 必须知道所有网格。换句话说,您必须使用 physi.js 形状之一。

所以你需要一个 physi.js 网格物体给你的玩家,这样他就不会从地板上掉下来。这不必与用户可见的网格相同。你可以有一个不可见的网格跟随玩家,也许有一个更简单的几何体。

如果您想要 Physi.js 网格的基本形状(长方体、平面、球体等)以外的任何东西,您需要构建复合形状。