Menu
CoddyTech

Riepilogo: il più vicino a portata

Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 11 di 64.

Questo capitolo ha usato le interfacce affinché uno script possa funzionare con elementi che non hanno nulla in comune, a parte un metodo. Ora il tasto di interazione seleziona quello più vicino.

challenge icon

Sfida

Facile

La barra spaziatrice dovrebbe usare l'oggetto più vicino, non il primo.

  1. In Interactor, prima del ciclo, aggiungi IInteractable nearest = null; e float best = Mathf.Infinity;.
  2. Nel ciclo, mantieni l'oggetto la cui Vector3.Distance dal giocatore è inferiore a best, insieme alla sua distanza.
  3. Dopo il ciclo, chiama nearest.Interact() se nearest non è null.

Premi «Gioca», mettiti tra il forziere e la leva e premi la barra spaziatrice: la leva viene tirata. Poi premi «Verifica».

Provalo tu

using UnityEngine;
using UnityEngine.InputSystem;

// Space usa il primo oggetto a portata di mano.
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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Architettura dei giochi in Unity

Esercitati da solo: Playground Unity