Linia widzenia
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 37 z 63.
Bycie blisko strażnika to nie to samo co bycie przez niego widzianym: ściana pomiędzy nimi blokuje widok. Aby sprawdzić, czy strażnik widzi cel, wyślij promień od oka w kierunku celu i sprawdź, czy pierwszą rzeczą, w którą trafi, jest sam cel. Kierunek to pozycja celu minus twoja pozycja, a promień o takiej długości dociera do celu:
public Transform target;
bool CanSee()
{
Vector3 toTarget = target.position - transform.position;
if (Physics.Raycast(transform.position, toTarget, out RaycastHit hit, toTarget.magnitude))
{
return hit.transform == target;
}
return false;
}Kamera bezpieczeństwa na słupie zapisuje I see you, gdy CanSee() zwraca true. Gdy cel jest na otwartej przestrzeni, promień trafia najpierw w cel. Gdy cel znajduje się za skrzynią, promień trafia najpierw w skrzynię, hit.transform wskazuje skrzynię, a wynikiem jest false. Samo Physics.Raycast również zwraca true dla skrzyni, dlatego trafienie jest porównywane z celem.
Cel musi mieć collider, aby promień mógł go znaleźć. Kierunek promienia nie musi być znormalizowany, ponieważ jego długość wynika z maxDistance. Physics.Linecast(from, to) sprawdza to samo z drugiej strony: czy jakikolwiek collider znajduje się między dwoma punktami: !Physics.Linecast(eye, target.position, wallMask) oznacza, że na drodze nie ma ściany.
Wyzwanie
ŚredniWieża strażnicza obserwuje gracza. Skrypt Sentry znajduje się na wieży, a w Inspektorze przypisz mu player i range o wartości 8. Kolor wieży pokazuje, co widzi:
- Gdy widzi gracza, pokoloruj wieżę na czerwono (
Color.red), a w przeciwnym razie na zielono (Color.green). - Widzieć gracza może tylko wtedy, gdy gracz znajduje się w odległości nie większej niż
rangejednostek i nic nie stoi między nimi.
Naciśnij Play i poruszaj graczem wokół ściany za pomocą strzałek, a następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
public class Sentry : MonoBehaviour
{
public Transform player;
public float range = 8f;
void Update()
{
// Czerwony, gdy strażnik widzi gracza, w przeciwnym razie zielony.
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
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 startowa2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur