问题描述
我正在读取附着在摄像机上的“枪支”实体旋转,并将该旋转应用为射弹的速度。但是他们似乎并没有以正确的角度射击。
示例如下: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 (将#修改为@)