2016-08-15 1 views
0

J'ai le composant suivant que j'attache à toutes les caméras dans la scène et enregistre les actions pour chaque point de contrôle que l'utilisateur peut entrer avec cette caméra. En ce moment, il fonctionne en vérifiant la position de la caméra par rapport au point de départ des caméras, mais comment puis-je obtenir cette position mondiale de caméras et être sûr que c'est une caméra active? Depuis, il semble que les caméras inactives continuent d'émettre des événements lorsque certains éléments physiques changent d'emplacement.Comment puis-je écouter la position du monde de la caméra?

AFRAME.registerComponent('user-checkpoints', { 
    init: function() { 
    var self = this; 
    this.el.addEventListener('componentchanged', isOnCheckPoint); 
    // Is user in checkpoint 
    function isOnCheckPoint (evt) { 
     // We don't want such precision what event emits 
     if (evt.detail.name !== 'position' || (
     (evt.detail.oldData.x).toFixed(1) === (evt.detail.newData.x).toFixed(1) && 
     (evt.detail.oldData.y).toFixed(1) === (evt.detail.newData.y).toFixed(1) && 
     (evt.detail.oldData.z).toFixed(1) === (evt.detail.newData.z).toFixed(1)) 
    ) { return; } 

    // Position has changed enough to check it 
    self.LookForCheckPoint(evt.detail.newData.x, evt.detail.newData.y, evt.detail.newData.z); 
    } 
    }, 
    LookForCheckPoint: function (x, y, z) { 
    // All the chekpoints are checked here 
    console.log('x:' + x + ' y:' + y + ' z:' + z); 
    } 
}); 

EDIT: je suis arrivé réponse à ma question d'un autre fil à How to listen to camera's world position in A-Frame?

Répondre

0

Vous pouvez vérifier si l'appareil est actif en faisant:

el.getAttribute('camera').active === true