export class ColliderComponent {
constructor() {
this.observer = this.mutationObserver();
this.aframe();
}
//Registers the AFRAME component.
aframe(){
const __this = this;
AFRAME.registerComponent('collider', {
schema: {
},
init: function() {
console.log("The element to be observed is:",this.el);
__this.observer.observe(this.el, {characterData:true, subtree:true, attributes: true, attributeFilter: ['position'], childList : true});
},
tick : function(){
console.log(this.el.getObject3D('mesh').position);
}
});
}
private tick(){
}
private mutationObserver() : MutationObserver{
return new MutationObserver(mutations => {
mutations.forEach(mutation => {
console.log("Changed position");
});
});
}
}
Ich arbeite an der Erstellung eines einfachen Collider. Ich werde die Elemente mit der Komponente "Collider" verfolgen und prüfen, ob sie sich überschneiden, indem Sie intersectsBox
verwenden. Leider kann ich den MutationObserver nicht zum Laufen bringen. Ich würde diesen Ansatz lieber anstelle des Häkchens verwenden, da er die Ausführung pro Frame startet, wenn sich die Elemente bewegen.Ist es möglich, Mutation Observer mit einem Three js-Element zu verwenden - A-Frame?
Irgendwelche Vorschläge?
Ich habe auch versucht, mit der Position getObject3D ('Mesh') zu überprüfen. Aber das löst nichts aus, wenn ich die Animationskomponente von A-Frame verwende. –