我正在使用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);
}
}
答案 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