2016-12-12 2 views

ответ

2

компонент, который непрерывно контролирует вращение камеры и обновления сферы использования клеща:

AFRAME.registerComponent('rotation-updater', { 
    tick: function() { 
    var sphere = this.el; 
    var camera = this.el.sceneEl.cameraEl; 

    var cameraRotation = camera.getAttribute('rotation'); 
    // var sphereRotation = DO SOMETHING WITH CAMERA ROTATION. 
    sphere.setAttribute('rotation', sphereRotation); 
    } 
}); 
+0

Привет Кевин! Почему бы не создать новый файл AFRAME.TWEEN.Tween() .blabla(). Start() и использовать .update() в тике? – Appeiron

+0

OP хотел, чтобы он был основан на повороте камеры. Tween может выполнять только базовые интерполяции. – ngokevin

+0

Но, если я тоже хочу использовать смягчение, я не могу просто сделать такое обходное решение :(Спасибо в любом случае. – Appeiron

0

Ну, это может быть использовано, когда анимация должна быть конечной:

AFRAME.registerComponent('camera-seeker', { 
    init() { 
     this.CAMERA = document.querySelector('#player'); 
     this.newCords = {}; 
     this.setupAnimation(); 
    }, 

    setupAnimation() { 
     let el = this.el; 
     var this_ = this; 
     seekAnim = new AFRAME.TWEEN.Tween(this.el.getAttribute('rotation')) 
      .to(this.newCords, 30000) 
      .easing(AFRAME.TWEEN.Easing.Quadratic.Out) 
      .onUpdate(function() { 
       el.setAttribute('rotation', `${this.x}, ${this.y}, ${this.z}`); 
      }) 
      .repeat(Infinity) 
      .start(); 
    }, 

    tick() { 
     if (!isGameStart()) return; 
     if (AFRAME.utils.coordinates.stringify(this.CAMERA.getAttribute('rotation')) !== AFRAME.utils.coordinates.stringify(this.el.getAttribute('rotation'))) { 
      Object.assign(this.newCords, this.CAMERA.getAttribute('rotation')); 
     } 
    } 
}); 
Смежные вопросы