勾号功能在0.8.2框架中不起作用

时间:2019-05-23 07:57:41

标签: aframe

我试图使用下面的链接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旋转实际结果。

2 个答案:

答案 0 :(得分:0)

您可以只做el.object3D.rotation.x += 0.1

答案 1 :(得分:0)

我希望我能澄清一下凯文的答案是可以的。

但是首先,代码正在运行。都在0.9.20.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中签出。