Repaso: torreta modular
Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 5 de 50.
Desafío
FácilConstruye las dos torretas del campo de pruebas con piezas. TurretControl.cs ya gira cada torreta con las flechas izquierda y derecha, y Shell.cs hace volar un proyectil hacia delante. La escena asigna a Turret1 un Cannon y un Ammo con 4 proyectiles, y a Turret2 un TwinCannon y un Ammo con 3 proyectiles. Escribe las piezas:
- Ammo: un
intpúblicoshellsy un método públicobool Take(). Si queda un proyectil, consume uno y devuelvetrue. Si no queda ninguno, registra el nombre del objeto yis empty, como enTurret2 is empty, y devuelvefalse. - Weapon: un componente abstracto que siempre incluye un Ammo, con un
shellPrefabpúblico (un GameObject), uncooldownpúblico de tipo float (el Inspector establece 1) y un método públicoPull(). Si se acciona durante el tiempo de espera, no hace nada y no consume ningún proyectil. De lo contrario, siTake()proporciona un proyectil, comienza el tiempo de espera y se ejecutaFire(), un método abstracto que cada arma implementa. - Cannon dispara un proyectil desde 1 unidad delante de la torreta. TwinCannon dispara dos proyectiles con una sola unidad de munición, desde 0.4 a la izquierda y 0.4 a la derecha de ese punto. Un proyectil comienza en
transform.position + transform.rotation * offset, con la misma orientación que la torreta (transform.rotation), dondeoffsetes el punto visto desde la torreta, comonew Vector3(0f, 0f, 1f). - En TurretControl, la barra espaciadora acciona el gatillo del arma que tenga la torreta.
Pulsa Play, gira y dispara hasta que ambas torretas se queden sin munición; después, pulsa Check.
Pruébalo tú mismo
using UnityEngine;
// Lo que comparten todas las armas de torreta.
public class Weapon : MonoBehaviour
{
}
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