Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Spacja powinna używać najbliższego obiektu, a nie pierwszego.

  1. W Interactor, przed pętlą, dodaj IInteractable nearest = null; i float best = Mathf.Infinity;.
  2. 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ą.
  3. Po pętli wywołaj nearest.Interact(), jeśli nearest nie 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;
                }
            }
        }
    }
}
quiz iconSprawdź się

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

Poćwicz samodzielnie: Edytor online Unity