Powtórka: najbliższy w zasięgu
Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 11 z 64.
W tym rozdziale użyliśmy interfejsów, dzięki którym jeden skrypt może działać z obiektami, które łączy tylko jedna metoda. Klawisz interakcji wybiera teraz najbliższy z nich.
Wyzwanie
ŁatwySpacja powinna używać najbliższego obiektu, a nie pierwszego.
- W
Interactor, przed pętlą, dodajIInteractable nearest = null;ifloat best = Mathf.Infinity;. - W pętli zachowaj każdy obiekt, którego odległość od gracza, obliczona za pomocą
Vector3.Distance, jest mniejsza niżbest, wraz z jego odległością. - Po pętli wywołaj
nearest.Interact(), jeślinearestnie jest null.
Naciśnij „Graj”, stań między skrzynią a dźwignią i naciśnij Spację: dźwignia zostaje pociągnięta. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
using UnityEngine.InputSystem;
// Spacja używa pierwszej rzeczy w zasięgu.
public class Interactor : MonoBehaviour
{
public float reach = 1.5f;
void Update()
{
if (Keyboard.current.spaceKey.wasPressedThisFrame)
{
foreach (Collider c in Physics.OverlapSphere(transform.position, reach))
{
if (c.TryGetComponent(out IInteractable thing))
{
thing.Interact();
return;
}
}
}
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Architektura gier w Unity
1Komponenty, nie hierarchie
Małe komponentyBazowy skrypt przeciwnikaKomponenty abstrakcyjneWspółpracujące komponentyPowtórka: modułowa wieżyczkaPowtórka: podwójne działo4Dane serializowane
Klasy serializowalneListy w InspectorzeEnumy w InspectorzePodsumowanie: tabela łupówPodsumowanie: losowanie łupów2Interfejsy w Unity
IDamageableInterfejsy i TryGetComponentGetComponentsPowtórka: klawisz interakcjiPowtórka: najbliższy w zasięgu5ScriptableObjects
Zasoby danychStatystyki broniWspółdzielone ustawieniaOcal wiatrFale jako danePowtórka: Baza przedmiotówPowtórka: Kupowanie w sklepie8Kod wielokrotnego użytku
Metody rozszerzająceGeneryczny singletonGeneryczne metody pomocniczePodsumowanie: FindNearestPoćwicz samodzielnie: Edytor online Unity