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");
});
});
}
}
私はシンプルなコライダーの作成に取り組んでいます。私は、 "コライダー"コンポーネントを持っている要素を追跡し、それらが交差しているかどうかをintersectsBox
で調べるつもりです。残念ながら、私はMutationObserverを機能させることができません。むしろ、要素が動いたときにフレームごとに実行を開始するので、私はむしろダニの代わりにこのアプローチを使用したいと思います。Three js element-A-FrameでMutation Observerを使用することはできますか?
提案がありますか?
また、getObject3D( 'mesh')の位置を調べてみました。しかし、それは私がA-Frameのアニメーションコンポーネントを使用しているときには何もトリガしません。 –