Menu
CoddyTech

Zusammenfassung: Nächstes in Reichweite

Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 11 von 64.

Dieses Kapitel hat Schnittstellen verwendet, damit ein Skript mit Dingen arbeiten kann, die nur eine Methode gemeinsam haben. Die Interaktionstaste wählt jetzt das nächstgelegene davon aus.

challenge icon

Aufgabe

Einfach

Mit der Leertaste sollte das nächstgelegene Objekt verwendet werden, nicht das erste.

  1. Füge in Interactor vor der Schleife IInteractable nearest = null; und float best = Mathf.Infinity; hinzu.
  2. Behalte in der Schleife jedes Objekt, dessen Vector3.Distance zum Spieler kleiner als best ist, zusammen mit seiner Entfernung bei.
  3. Rufe nach der Schleife nearest.Interact() auf, wenn nearest nicht null ist.

Drücke auf „Spielen“, stelle dich zwischen die Truhe und den Hebel und drücke die Leertaste: Der Hebel wird gezogen. Drücke dann auf „Prüfen“.

Probier es selbst

using UnityEngine;
using UnityEngine.InputSystem;

// Die Leertaste verwendet das erste Objekt in Reichweite.
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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Spielarchitektur in Unity

Übe selbstständig: Unity-Playground