gpt4 book ai didi

javascript - Three.js 飞机的3D旋转

转载 作者:行者123 更新时间:2023-11-29 10:20:29 26 4
gpt4 key购买 nike

我正在尝试制作一个简单的飞机飞行游戏。我希望用户使用箭头键围绕 360 度区域旋转飞机,其中上下是相对于飞机水平位置的 Y 轴。左箭头和右箭头应该只是围绕它的 z 轴旋转平面,并允许它有一个新的 Y 轴位置。我的问题是 - 如何在相对于新水平位置的 Y 轴上旋转飞机?

我有一个名为 airplane 的小组,并且做过类似 airplane.rotation.z(左右)和 airplane.rotation.x(上下)之类的东西 - 但 x 轴不在新的水平面上.我还尝试使用 airplane.children[1].matrix.rotation.x 访问组内的模型/网格,看看这是否可以改变相对 Y 轴......但这会导致同样的问题。如何找到相对于当前水平位置的 Y 轴?

我的代码可以在jsfiddle here上看到

如有任何帮助,我们将不胜感激。

最佳答案

坦率地说,我很难理解您的问题,但我认为您的问题是:“如何使用箭头键围绕对象的内部 z 轴或 x 轴旋转对象?”

像这样的例程会做到这一点:

var _q1 = new THREE.Quaternion();

function rotateOnAxis( object, axis, angle ) {

_q1.setFromAxisAngle( axis, angle );
object.quaternion.multiplySelf( _q1 );

}

这个例程使用四元数来实现。这真的没什么大不了的——你只需要设置:

object.useQuaternion = true;

这是一个更新的 fiddle :http://jsfiddle.net/Lc8gH/20/ .


编辑:您现在可以使用 Object3D.rotateOnAxis( axis, angle );

three.js r.58

关于javascript - Three.js 飞机的3D旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13210873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com