微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用A型镜架向相机瞄准的地方发射弹丸

如何解决如何使用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 举报,一经查实,本站将立刻删除。