Menu
CoddyTech

Repaso: El más cercano al alcance

Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 11 de 64.

Este capítulo usó interfaces para que un script pueda funcionar con cosas que no comparten nada excepto un método. Ahora, la tecla de interacción elige la más cercana de ellas.

challenge icon

Desafío

Fácil

La tecla Espacio debería usar el objeto más cercano, no el primero.

  1. En Interactor, antes del bucle, añade IInteractable nearest = null; y float best = Mathf.Infinity;.
  2. En el bucle, conserva cualquier objeto cuya Vector3.Distance al jugador sea menor que best, junto con su distancia.
  3. Después del bucle, llama a nearest.Interact() si nearest no es null.

Pulsa «Jugar», colócate entre el cofre y la palanca y pulsa Espacio: se acciona la palanca. Después, «Comprobar».

Pruébalo tú mismo

using UnityEngine;
using UnityEngine.InputSystem;

// La barra espaciadora usa la primera cosa que esté al alcance.
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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Arquitectura de juegos en Unity

Practica por tu cuenta: Playground de Unity