我正在使用Three.js
和PointerLockControls
来创建简单的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);
}
}
最佳答案
如果您正在使用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