Я использую A-Frame и хочу, чтобы объект двигался вместе с камерой. Для этого я собрал компонент, который обновляет положение объекта в зависимости от положения камеры:
AFRAME.registerComponent('follow', {
schema: {
distance: {type: 'vec3'},
target: {type: 'selector'}
},
tick: function() {
const targetItem = this.data.target;
const relativePosition = this.data.distance
var tempPos = targetItem.getAttribute("position").split(" ").map(Number);
targetPos = new THREE.Vector3(relativePosition.x + tempPos[0], relativePosition.y + tempPos[1], relativePosition.z + tempPos[2]);
this.el.setAttribute('position', targetPos)
}
});
Это отлично работает, когда я использую init
вместо tick
, но поскольку это функция инициализации, она обновляет ее только один раз в начале сцены. Почему-то при использовании tick
все ломается. Я неправильно это использую? Должен ли я делать что-то другое, чтобы постоянно обновлять его положение?
Заранее спасибо!
Изменить: я должен упомянуть, что цель состоит в том, чтобы что-то отслеживать, но не привязано к вашему представлению. Вспомните Navi из Ocarina of Time.