Physics.Raycast
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 35 z 71.
Raycast wysyła niewidzialną linię z punktu w określonym kierunku i informuje, czy trafiła w collider. Physics.Raycast(origin, direction, maxDistance) zwraca true, gdy collider znajduje się na linii w odległości nie większej niż maxDistance jednostek, a w przeciwnym razie zwraca false. Ten samochód hamuje, gdy cokolwiek znajduje się mniej niż 2 jednostki przed jego przodem:
public float brakeDistance = 2f;
void Update()
{
if (Physics.Raycast(transform.position, transform.forward, brakeDistance))
{
Debug.Log("Brake!");
}
}transform.forward obraca się razem z samochodem, więc promień zawsze jest skierowany przed jego przód; Vector3.forward zawsze wskazywałoby wzdłuż osi z świata. Promień zaczyna się w środku samochodu, wewnątrz jego własnego collidera, a promień nigdy nie zgłasza collidera, wewnątrz którego się zaczyna, więc samochód nie wykrywa samego siebie. Pomiń maxDistance, a promień będzie biegł w nieskończoność: samochód hamowałby przed ścianą po drugiej stronie mapy.
Promienie wykrywają collidery, a nie to, co jest rysowane: obiekt z komponentem Renderer i bez collidera jest dla nich niewidoczny, a collider typu trigger jest traktowany jako trafienie. Podczas testowania Debug.DrawRay(transform.position, transform.forward * brakeDistance, Color.red) rysuje promień w widoku Scene w Unity.
Wyzwanie
ŚredniSpraw, aby drzwi do sklepu otwierały się, gdy ktoś stoi pod czujnikiem.
- W
Update()sprawdźPhysics.Raycast(transform.position, Vector3.down, reach): promień skierowany pionowo w dół, o długościreachjednostek, który zatrzymuje się nad podłożem. - Gdy warunek jest spełniony, wywołaj
door.SetActive(false);, a w blokuelse—door.SetActive(true);.
Naciśnij „Graj” i przeprowadź Visitor pod czujnikiem: drzwi się otwierają i zamykają za nim. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class DoorSensor : MonoBehaviour
{
public GameObject door;
public float reach = 3f;
void Update()
{
// Otwieraj drzwi, dopóki promień skierowany w dół z Sensor trafia w jakiś obiekt.
}
}
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