我试图使用下面的链接https://github.com/aframevr/aframe/blob/master/docs/introduction/best-practices.md中所述的刻度功能,但没有成功
AFRAME.registerComponent('foo', {
tick: function () {
var el = this.el;
var rotationTmp = this.rotationTmp = this.rotationTmp || {x: 0, y: 0, z: 0};
var rotation = el.getAttribute('rotation');
rotationTmp.x = rotation.x + 0.1;
rotationTmp.y = rotation.y;
rotationTmp.z = rotation.z;
el.setAttribute('rotation', rotationTmp);
}
});
对象的预期输出应该绕x旋转实际结果。
答案 0 :(得分:0)
您可以只做el.object3D.rotation.x += 0.1
答案 1 :(得分:0)
我希望我能澄清一下凯文的答案是可以的。
但是首先,代码正在运行。都在0.9.2和0.8.2中。 问题可能与
有关js:
AFRAME.registerComponent('foo', {
// component body
})
html:
<a-entity foo></a-entity>
对于Kevins的回答-最好通过引用基础的tick
对象对THREE.js
函数进行更改。
如果您要旋转盒子,则无需抛出所有逻辑:
1)创建一个tmp变量
2)获取对象旋转
3)设置tmp变量
4)设置对象旋转
当您有一个在每个渲染循环(tick
)上执行的函数时,您希望最大程度地减少那里发生的事情。因此,凯文直接访问THREE.js
对象,并更改旋转角度:
tick: function() {
el.object3D.rotation.x += 0.1 * Math.PI / 180 // three uses radians
}
在this fiddle中签出。