RaycastHit
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 36 z 71.
Physics.Raycast może również powiedzieć, w co trafił. Dodaj out RaycastHit hit po kierunku: gdy metoda zwraca true, wypełnia hit szczegółami trafienia. out to sposób, w jaki metoda C# zwraca dodatkową wartość za pośrednictwem przekazanej jej zmiennej. Ten dalmierz zapisuje w logu, w co jest skierowany i jak daleko znajduje się ten obiekt, gdy naciśniesz spację:
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, 50f))
{
Debug.Log(hit.collider.name + " is " + hit.distance + " units away");
}
}
}Skierowany na ścianę, której przód znajduje się 12 jednostek dalej, zapisuje w logu Wall is 12 units away. Pozostałe pola: hit.point to punkt w świecie, w którym promień dotknął powierzchni, hit.normal to kierunek, w którym zwrócona jest powierzchnia w tym punkcie ((0, 1, 0) na płaskim podłożu), a hit.transform to Transform trafionego obiektu. Za pomocą hit.collider.gameObject uzyskasz dostęp do innych informacji o tym obiekcie, takich jak jego tag.
Odczytuj hit tylko wewnątrz if. Gdy promień nie trafia, Raycast zwraca false, a hit nie zawiera niczego użytecznego: jego collider ma wartość null.
Wyzwanie
ŚredniDodaj do pistoletu celownik laserowy: czerwoną kropkę w miejscu, w którym pada wiązka lasera.
- W
Update()wywołajPhysics.Raycast(transform.position, transform.forward, out RaycastHit hit, range). - Gdy promień trafi, wywołaj
dot.gameObject.SetActive(true);i ustawdot.position = hit.point;. - Gdy promień nie trafi, wywołaj
dot.gameObject.SetActive(false);.
Naciśnij „Graj” i obróć pistolet: kropka przesuwa się po ścianie i skrzyniach. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class LaserSight : MonoBehaviour
{
public Transform dot;
public float range = 15f;
void Update()
{
// Umieść dot w miejscu, w którym laser trafia w powierzchnię; ukryj go, gdy laser w nic nie trafia.
}
}
Wszystkie lekcje w sekcji Fizyka i rozgrywka
1Ciało sztywne
Grawitacja i masaPopychanie za pomocą AddForceSkok z impulsemFixedUpdate dla fizykiPrędkośćCiała kinematycznePowtórka: platforma startowa4Korutyny
WywoływanieInvokeRepeating i CancelInvokeTwoja pierwsza korutynaPętle w korutynachZatrzymywanie korutynPodsumowanie: odliczanie10Projekt: Ucieczka z areny
ArenaŁowcy2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur5Projekt: Wyścig po monety
Tocząca się piłkaZbieranie monet3Wyzwalacze
Kolizje wyzwalająceOnTriggerEnterPrzedmioty do zebraniaSkrzynie zatrzymują resztęStrefy śmierciWejście i wyjściePodsumowanie: klucz i drzwiPoćwicz samodzielnie: Edytor online Unity