Sök…


Introduktion

Raycaster-komponenten gör allmän skärningstest med en raycaster. Raycasting är metoden för att utöka en linje från ett ursprung mot en riktning och kontrollera om den linjen korsar varandra med andra enheter. Raycaster-komponenten är ett omslag på toppen av three.js-raycaster. Den kontrollerar för korsningar i ett visst intervall mot en lista med objekt och kommer att avge händelser på enheten när den upptäcker korsningar eller rensning av korsningar (dvs. när strålkastaren inte längre är

parametrar

Parameter detaljer
långt Maximalt avstånd under vilket resulterande enheter returneras. Kan inte vara lägre än nära.
intervall Antal millisekunder att vänta mellan varje korsningstest. Lägre antal är bättre för snabbare uppdateringar. Högre antal är bättre för prestanda.
nära Minsta avstånd över vilket återuppbyggnadsenheter returneras. Kan inte vara lägre än 0.
objekt Frågaväljare för att välja vilka objekt som ska testas för korsning. Om det inte anges testas alla enheter.
rekursiv Kontrollerar alla barn av objekt om de är inställda. Annars kontrollerar bara korsningar med rotobjekt.

Anmärkningar

evenemang

namn detaljer
raycaster-intersected Utsänds från den korsade enheten. Enheten korsar varandra med en raycaster. Händelsedetalj kommer att innehålla el, raycasting-enheten och korsningen, ett objekt som innehåller detaljerad information om skärningspunkten.
raycaster-intersected-cleared Utsänds från den korsade enheten. Enheten korsar inte längre en strålkastare. Eventdetaljer kommer att innehålla el, raycasting-enheten.
raycaster-intersection Utsläpps från raycasting-enheten. Raycaster korsar varandra med en eller flera enheter. Händelsedetaljer kommer att innehålla els, en matris med de korsade enheterna och korsningar, en matris med objekt som innehåller detaljerad information om korsningarna.
raycaster-intersection-cleared Utsläpps från raycasting-enheten. Raycaster korsar inte längre en enhet. Eventdetaljer kommer att innehålla el, den tidigare korsade enheten.

Medlem

Medlem Beskrivning
intersectedEls Enheter som för närvarande korsar strålkastaren.
objects three.js-objekt att testa för korsningar. Kommer att vara scen.barn om inte objekt är inte angiven.
raycaster three.js raycaster-objekt.

Methode

Metod Beskrivning
refreshObjects Uppdaterar listan med objekt baserade på objektets egendom för att testa för korsning.

Ställa in Raycasterens ursprung och riktning

Strålkastaren har ett ursprung, där strålen börjar, och en riktning, där strålen går.

Stråleorganets ursprung ligger i raycasterenhetens position. Vi kan ändra ursprunget till raycasteren genom att ställa in positionskomponenten för raycaster-enheten (eller moder-enheter för raycaster-enheten).

Riktningsstrålens riktning är framme för strålkastareenheten (dvs. 0 0 -1, på den negativa Z-axeln). Vi kan ändra riktningen för raycasteren genom att ställa in rotationskomponenten för raycaster-enheten (eller moder-enheter för raycaster-enheten).

Till exempel applicerar här en strålkastare längs en roterad kula:

<!-- 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>

Vitlistande enheter för att testa för korsning

Vi vill vanligtvis inte testa allt i scenen för korsningar (t.ex. för kollisioner eller klick). Selektiva korsningar är bra för prestanda för att begränsa antalet enheter som ska testas för korsning eftersom korsningstestning är en operation som går över 60 gånger per sekund.

För att välja eller välja de enheter vi vill testa för korsning kan vi använda objektets egenskap. Om den här egenskapen inte är definierad testar raycasteren alla objekt i scenen för skärningspunkt. objekt tar en frågaväljare:

<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>


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow