如何解决如何使用A型镜架向相机瞄准的地方发射弹丸
我正在读取附着在摄像机上的“枪支”实体旋转,并将该旋转应用为射弹的速度。但是他们似乎并没有以正确的角度射击。
示例如下:https://glitch.com/~morning-fuschia-hiss
我正在这样读取枪的位置:
function getGunPosition() {
const position = new THREE.Vector3();
const rotation = new THREE.Quaternion();
const matrix = new THREE.Matrix4();
document.querySelector("#gun").object3D.updateMatrixWorld();
position.setFromMatrixPosition(
document.querySelector("#gun").object3D.matrixWorld
); // Vector3
rotation.setFromrotationMatrix(
matrix.extractRotation(
document.querySelector("#gun").object3D.matrixWorld
)
);
var quaternion = new THREE.Quaternion();
quaternion = document.querySelector("#camera").object3D.quaternion;
console.log(
"Position: " + position.x + " " + position.y + " " + position.z
);
console.log(
"Rotation: " + rotation.x + " " + rotation.y + " " + rotation.z
);
// console.log("Tru rotation: ",document.querySelector("#gun").getAttribute("rotation"));
// console.log("Camera rotation ",document.querySelector("#camera").object3D.rotation,quaternion);
return { origin: position,rotation: rotation };
}
然后尝试像这样应用它:
var velX = Math.cos(THREE.Math.degToRad(rotation.x))*15;
var velY = Math.sin(THREE.Math.degToRad(rotation.y))*15;
var velZ = -15;
document.querySelector("#" + id).body.veLocity.set(velX,velY,velZ);
document.querySelector("#" + id).components["dynamic-body"].syncFromPhysics();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。