【发布时间】:2021-01-04 22:38:26
【问题描述】:
在键盘按钮上,我正在调用以下函数。我只想在 Z 轴上应用运动。效果很好。
// declared global Object3D object
function moveRight() {
v = new THREE.Vector3(0, 0, 0.01)
object.position.add(v)
}
但是,有时模型已经旋转。我将此旋转存储在变量“totalrotation”(以度为单位)中。在这种情况下,我想在正确的方向上移动我的对象(不仅在 z 轴上)。我试过的是:
// declared global Object3D object
// declared global float totalrotation, lets say it is 90 deg
function moveRight() {
v = new THREE.Vector3(0, 0, 0.01)
rads = THREE.Math.degToRad(totalrotation)
v.applyAxisAngle( new THREE.Vector3(0, 1, 0), rads);
object.position.add(v)
}
但它不起作用。然后我进一步尝试,只是尝试将 rads 除以数字 4:
// declared global Object3D object
// declared global float totalrotation, lets say it is 90 deg
function moveRight() {
v = new THREE.Vector3(0, 0, 0.01)
rads = THREE.Math.degToRad(totalrotation) / 4
v.applyAxisAngle( new THREE.Vector3(0, 1, 0), rads);
object.position.add(v)
}
它开始按预期工作。 谁能解释一下,为什么第二个代码示例不起作用?在第二个示例中,我向对象添加了正确旋转的矢量,但我不知道为什么必须将角度除以数字 4。
EDIT1:这个问题无法解决,因为我在另一种方法中犯了错误,所以总旋转应该大4倍。没有“/ 4”划分的代码段正在工作。答案中有更多信息。
【问题讨论】:
标签: javascript vector three.js rotation