1

私のシーンでは、スクリプトを使用して 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
});

手がかりはありますか?バカなことをしているに違いない。

4

2 に答える 2

2

これはコンポーネントのメンバーであり、掘り下げる必要があります。

ray.components.raycaster.raycaster

  • ray- 実在物
  • .components- エンティティのコンポーネント
  • .raycaster- レイキャスター コンポーネント
  • .raycaster- raycaster コンポーネントのメンバーとしての raycaster オブジェクト
于 2016-10-13T04:42:21.357 に答える