2017-02-22 81 views
1

我正在使用Three.jsPointerLockControls来创建简单的FPS游戏。我想要做的是将武器附加到相机/控件。如何使一个对象遵循Three.js中PointerLockControls的方向?

我能够将枪放在相机前面并沿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

如果您正在使用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