如何使对象遵循Three.js中PointerLockControls的方向?

时间:2017-02-22 20:33:57

标签: javascript three.js

我正在使用Three.jsPointerLockControls创建简单的FPS游戏。我要做的是将武器附加到相机/控件上。

我能够将枪放在相机前面并沿x / y轴移动,但它不会沿z轴移动(向上/向下)。

function updateGun() {
    if (weapon) {
        const yaw = controls.getObject();
        weapon.position.set(
            yaw.position.x - Math.sin(yaw.rotation.y) * 3,
            yaw.position.y - 1,
            yaw.position.z - Math.cos(yaw.rotation.y) * 3);

        weapon.rotation.set(
            yaw.rotation.x,
            (yaw.rotation.y - Math.PI),
            yaw.rotation.z);
    }
}

1 个答案:

答案 0 :(得分:1)

如果您正在使用PointerLockControls并想要添加一个保留在相机前面的对象,则可以使用此模式:

var mesh = new THREE.Mesh( new THREE.SphereGeometry( 5, 16, 8 ), new THREE.MeshNormalMaterial() );
mesh.position.z = - 100; // some negative number

camera.add( mesh );

如果你没有使用PointerLockControls,你仍然可以使用相同的技术,你只需要确保将相机添加为场景的孩子。

scene.add( camera );
camera.add( mesh );

three.js r.84