aframe
レイキャスター(コンポーネント)
サーチ…
前書き
raycasterコンポーネントは、レイキャスターとの一般的な交差テストを行います。レイキャスティングは、線を原点から方向に向かって延長し、その線が他のエンティティと交差するかどうかをチェックする方法です。 raycasterコンポーネントは、three.jsレイキャスターの上にあるラッパーです。オブジェクトのリストに対して特定の間隔で交差点がないかどうかをチェックし、交差点の検出や交差点のクリアを検出した場合(つまり、レイキャスターがもはや存在しない
パラメーター
パラメータ | 詳細 |
---|---|
遠い | 結果のエンティティが返される最大距離。それから近くに低くすることはできません。 |
間隔 | 各交差テストの間に待機するミリ秒数。より短い番号は、より迅速な更新に適しています。パフォーマンスが高いほど数値が高くなります。 |
近く | 再建エンティティが返される最小距離。 0より小さくすることはできません。 |
オブジェクト | 問合せセレクタは、交差をテストするオブジェクトを選択します。指定されていない場合は、すべてのエンティティがテストされます。 |
再帰的 | 設定されている場合、オブジェクトのすべての子をチェックします。そうでなければ、ルートオブジェクトとの交差点のみをチェックします。 |
備考
イベント
名 | 詳細 |
---|---|
raycaster-intersected | 交差したエンティティで送信されます。エンティティはレイキャスターと交差しています。イベントの詳細には、el、レイキャスティングエンティティ、および交差点に関する詳細データを含むオブジェクトである交差点が含まれます。 |
raycaster-intersected-cleared | 交差したエンティティで送信されます。エンティティはもはやレイキャスターと交差しません。イベントの詳細には、レイキャスティングエンティティelが含まれます。 |
raycaster-intersection | レイキャスティングエンティティで送信されます。 Raycasterは1つ以上のエンティティと交差しています。イベントの詳細には、els、交差したエンティティを含む配列、および交差点、交差点の詳細データを含むオブジェクトの配列が含まれます。 |
raycaster-intersection-cleared | レイキャスティングエンティティで送信されます。 Raycasterはもはやエンティティと交差しません。イベントの詳細には、前に交差したエンティティであるelが含まれます。 |
メンバー
メンバー | 説明 |
---|---|
intersectedEls | 現在、レイキャスターと交差しているエンティティ。 |
objects | 交差点をテストするためのthree.jsオブジェクト。オブジェクトでない場合はscene.childrenプロパティが指定されていません。 |
raycaster | three.jsレイキャスターオブジェクト。 |
メソード
方法 | 説明 |
---|---|
refreshObjects | 交差点をテストするオブジェクトプロパティに基づいてオブジェクトのリストを更新します。 |
レイキャスターの原点と方向の設定
レイキャスターには、レイが開始する起点と、レイが進む方向があります。
raycasterの起源は、raycasterエンティティの位置にあります。レイキャスターエンティティ(またはレイキャスターエンティティの親エンティティ)の位置コンポーネントを設定することによって、レイキャスターの起点を変更できます。
レイキャスターの方向は、レイキャスターエンティティの「正面」(つまり、負のZ軸上の0 0 -1)にあります。レイキャスターエンティティ(またはレイキャスターエンティティの親エンティティ)の回転コンポーネントを設定することで、レイキャスターの方向を変更できます。
たとえば、回転した弾丸の長さに沿ってレイキャスターを適用すると、次のようになります。
<!-- Bullet, rotated to be parallel with the ground. -->
<a-entity id="bullet" geometry="primitive: cylinder; height: 0.1" rotation="-90 0 0">
<!-- Raycaster, targets enemies, made to be as long as the bullet, positioned to the start of the bullet, rotated to align with the bullet. -->
<a-entity raycaster="objects: .enemies; far: 0.1" position="0 -0.5 0" rotation="90 0 0"></a-entity>
</a-entity>
ホワイトリストのエンティティが交差をテストする
私たちは通常、交差点(衝突やクリックなど)のシーン内のすべてをテストしたくありません。交差テストは1秒間に60回以上実行される操作であるため、選択的な交差はパフォーマンスを向上させ、交差をテストするエンティティの数を制限します。
交差をテストするエンティティを選択または選択するには、objectsプロパティを使用します。このプロパティが定義されていない場合、レイキャスターはシーン内のすべてのオブジェクトが交差するかどうかをテストします。オブジェクトはクエリセレクタ値をとります:
<a-entity raycaster="objects: .clickable" cursor></a-entity>
<a-entity class="clickable" geometry="primitive: box" position="1 0 0"></a-entity>
<a-entity class="not-clickable" geometry="primitive: sphere" position="-1 0 0"></a-entity>