多属性组件的 setAttribute 不适用于 vec3

setAttribute for multi attribute component not working for vec3

我正在尝试通过以下代码向实体添加多属性组件 -

在一帧场景内 -

<a-entity id="hornets"></a-entity>

在控制器内 -

var hornets = document.querySelector('#hornets');      
hornets.setAttribute('crtmodelcopy', {id: 'ball', jitter: 5 1.2 0.4, modelCenter: 2 0.5 -50, src:'#hornet'});

该组件的代码如下 -

AFRAME.registerComponent('crtmodelcopy', {
  schema: {
          id: {type:'string'},
          jitter: {type:'vec3'},
          modelCenter: {type:'vec3'},
          src: {type:'string'}
          },
  init: function() {
          ......
   }

但是,我在控制台中收到以下错误 -

Uncaught SyntaxError: Unexpected number

我无法理解我在这里做错了什么。我尝试过其他组合,但无济于事。在某些情况下,组件在没有任何属性的情况下被附加。我认为问题是由于 jitter 和 modelCenter 属性是 vec3 字段,所以我也需要以相同的格式传递数据。

有人可以帮忙吗?

谢谢, 尼拉吉

实际上您没有传递 vec3,只是传递了三个意外值的数字,因为解析器需要一个向量。


要么传一个vec3:

setAttribute("test", {"jitter": new THREE.Vector3( 0, 1, 0 )})

或向量的字符串版本:

setAttribute("test", {"jitter": "0 1 0"})

检查一下 here。控制台显示两个向量都已正确传递到 update 函数中。