Inflige daño a todo
Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 43 de 50.
Desafío
IntermedioAhora el combate va en ambos sentidos. Conserva todo lo de las lecciones anteriores. Los enemigos ya no tienen etiquetas: el golpe encuentra lo que puede dañar mediante una interfaz, y los enemigos dañan al héroe mediante esa misma interfaz.
IDamageabledeclara un método,void TakeDamage(int amount);.Enemylo implementa. Tienehealth,damageyattackEvery, configurados en el Inspector (un grunt tiene 2, 1 y 1; el dasher, 1, 2 y 1).TakeDamagerestaamountahealthy destruye al enemigo cuando llega a 0 o menos. EnStart, guarda también elIDamageabledel héroe. En cada fotograma, cuando el héroe está a menos de 1.2 unidades, llama a suTakeDamage(damage), como máximo una vez cadaattackEverysegundos.Herolo implementa, conswingDamage(1),maxHealth(5) ysafeTime(1) configurados en el Inspector, y unhealthque comienza con el valor demaxHealthenAwake. Un golpe restaamount, registra la salud comoHero HP: 4y mantiene al héroe a salvo de más golpes durantesafeTimesegundos. Cuando la salud llega a 0, registraThe hero fallsy desactiva el script Hero (enabled = false). Un héroe caído ignora los golpes.- El golpe ya no comprueba etiquetas ni destruye nada: llama a
TakeDamage(swingDamage)en todo lo que esté al alcance y delante, y tenga unIDamageable.
Pulsa Play y lucha; después, pulsa Check.
Pruébalo tú mismo
// Una lección posterior completará esto: cualquier cosa que pueda recibir daño.
public interface IDamageable
{
}
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 modular4Datos serializados
Clases serializablesListas en el InspectorEnumeraciones en el InspectorRepaso: tabla de botín7Máquinas de estados
Estados como clasesUna máquina de estadosTransicionesCerebros de enemigosRepaso: estados de puertas10Proyecto: Superviviente de la arena
El héroeTipos de enemigos2Interfaces en Unity
IDamageableInterfaces y TryGetComponentGetComponentsRepaso: tecla de interacción5ScriptableObjects
Recursos de datosEstadísticas de armasConfiguración compartidaOleadas como datosRepaso: base de datos de objetos