0

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

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

然后我会实例化一个 Player 并将相机添加到它以实现第一人称视觉。但是,我必须为 Player 编写所有碰撞检测程序,这样他就不会从地板上掉下来。我可以new Physijs.BoxMesh用于地板,但是播放器呢?如何使用 Physijs 创建一个应用了物理的“玩家”类?我尝试了类似... Physijs.Mesh.apply(...)... and的东西Object.create(Physijs.Mesh.prototype),但这不起作用。

感谢您的任何反馈。

4

1 回答 1

0

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

因此,您需要一个 physi.js 网格来为您的 Player 使用,这样他就不会从地板上掉下来。这不必是用户可见的同一个网格。你可以有一个不可见的网格跟随玩家,也许有一个更简单的几何图形。

如果您想要的不仅仅是 Physi.js 网格的基本形状(长方体、平面、球体等)之一,则需要构建复合形状。

于 2015-01-30T19:26:03.037 回答