私のシーンでは、スクリプトを使用して raycaster コンポーネントを持つエンティティを作成しています。これはうまく機能し、イベント リスナーは正常に動作して、地面のオブジェクトと衝突します。しかし、私の地面はでこぼこしていて、レイキャスターが当たる地面の高さを知る必要があります。私の知る限り、これは A-Frame が提供するものだけでは不可能です。THREE の raycaster.intersectObject を呼び出したいのですが、THREE raycaster への作業参照を取得できません。A-Frame のドキュメントには raycaster というメンバーが記載されていますが、私には未定義です。私はいくつかの異なることを試しましたが、役に立ちませんでした。私の次の計画は新しいコンポーネントを作ることでしたが、最初にここで質問することにしました。
var ray = document.createElement('a-entity');
ray.setAttribute('id', 'raycaster');
ray.setAttribute('raycaster', 'objects: #ground');
ray.setAttribute('position', pos);
ray.setAttribute('rotation', '-90 0 0');
scene.appendChild(ray);
var ground = document.querySelector('#ground');
ray.addEventListener('raycaster-intersection', function() {
console.log(ray.raycaster); //undefined
console.log(ray.intersectedEls); //undefined
console.log(ray.objects); //undefined
console.log(ray.object3D.id); //gives me the THREE id
console.log(ray.object3D.intersectObject(ground.object3D, false)); //intersectObject not a function
});
手がかりはありますか?バカなことをしているに違いない。