我正在尝试使用动画组件将沿y轴的动画添加到实体,还尝试在自定义组件中更改其沿z轴的位置。但是,动画组件优先,并且自定义组件中z轴的位置更改不起作用。
我想使用动画组件更改沿y轴的位置,并使用我的自定义组件更改沿z轴的位置。
这是我的代码-
<a-entity id="orca" position="4 1 -18" gltf-model="#orca1" static-body animation="property: position.y; dir: alternate; dur: 1000; easing: easeInSine; loop: true; to: -1" move></a-entity>
AFRAME.registerComponent('move', {
schema: {
},
init: function() {
this.directionVec3 = new THREE.Vector3(0, 1, 1);
},
tick: function(t, dt) {
var directionVec3 = this.directionVec3;
var currentPosition = this.el.object3D.position;
directionVec3.z = dt/1000;
this.el.setAttribute('position', {
z: currentPosition.z + directionVec3.z
});
if (currentPosition.z > 10) {
this.el.setAttribute('position', {
z: -14
});
}
}
});
能请你帮忙吗?我选择动画组件沿y轴移动的唯一原因是,我使用了easyInSine获得了平滑的正弦曲线移动。
答案 0 :(得分:2)
如您所见,动画组件将覆盖您的位置。在这种情况下,您可以将组件应用于父实体以避免冲突:
<a-entity move>
<a-entity id="orca" position="4 1 -18" gltf-model="#orca1" static-body animation="property: position.y; dir: alternate; dur: 1000; easing: easeInSine; loop: true; to: -1">
</a-entity>
</a-entity>