如何使用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 (将#修改为@)