Menu
CoddyTech

Repaso: torreta modular

Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 5 de 50.

challenge icon

Desafío

Fácil

Construye 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 int público shells y un método público bool Take(). Si queda un proyectil, consume uno y devuelve true. Si no queda ninguno, registra el nombre del objeto y is empty, como en Turret2 is empty, y devuelve false.
  • Weapon: un componente abstracto que siempre incluye un Ammo, con un shellPrefab público (un GameObject), un cooldown público de tipo float (el Inspector establece 1) y un método público Pull(). Si se acciona durante el tiempo de espera, no hace nada y no consume ningún proyectil. De lo contrario, si Take() proporciona un proyectil, comienza el tiempo de espera y se ejecuta Fire(), 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), donde offset es el punto visto desde la torreta, como new 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