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.
Desafío
FácilLa tecla Espacio debería usar el objeto más cercano, no el primero.
- En
Interactor, antes del bucle, añadeIInteractable nearest = null;yfloat best = Mathf.Infinity;. - En el bucle, conserva cualquier objeto cuya
Vector3.Distanceal jugador sea menor quebest, junto con su distancia. - Después del bucle, llama a
nearest.Interact()sinearestno 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;
}
}
}
}
}
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
1Componentes, no jerarquías
Componentes pequeñosUn script base para enemigosComponentes abstractosComponentes que trabajan juntosRepaso: torreta modularRepaso: cañón doble4Datos serializados
Clases serializablesListas en el InspectorEnumeraciones en el InspectorRepaso: tabla de botínRepaso: sortear el botín2Interfaces en Unity
IDamageableInterfaces y TryGetComponentGetComponentsRepaso: Tecla de interacciónRepaso: El más cercano al alcance5ScriptableObjects
Activos de datosEstadísticas de armasConfiguración compartidaGuardar el vientoOleadas como datosRepaso: base de datos de objetosRepaso: comprar en la tienda3Eventos
Eventos de C# en UnitySuscribirse en OnEnableCampos UnityEventLos eventos controlan la interfazRepaso: ventana emergente de logrosRepaso: temporizador de la ventana emergentePractica por tu cuenta: Playground de Unity