Menu
CoddyTech

Resumen: pool de balas

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

challenge icon

Desafío

Intermedio

Práctica de tiro. Las flechas deslizan el tanque hacia la izquierda y la derecha (listo), y los dos objetivos rojos tienen un script Target con Hit() (listo). Haz que el tanque dispare balas reutilizadas del pool:

  • En Tank.cs, mantén un ObjectPool<Bullet> que cree balas a partir de bulletPrefab, las active cuando se saquen y las desactive cuando vuelvan, destruya las que se descarten y conserve como máximo 4 balas de repuesto.
  • La barra espaciadora toma una bala del pool y la inicia a 1 unidad delante del tanque.
  • En Bullet.cs, una bala vuela hacia delante (+z) a speed (15). Cuando golpea algo con un script Target (el colisionador de la bala es un disparador), llama a Hit() del objetivo y vuelve al pool inmediatamente. Una bala que no golpea nada vuelve después de life (1) segundos.
  • Cada disparo le da a la bala su vida útil completa, también si se reutiliza, y la bala vuelve al pool una sola vez por disparo.

Pulsa Play, dispara a ambos objetivos y luego pulsa Check.

Pruébalo tú mismo

using UnityEngine;
using UnityEngine.Pool;

public class Bullet : MonoBehaviour
{
    public float speed = 15f;
    public float life = 1f;

    // Avanza; vuelve al pool cuando golpees un Target o después de life segundos
}

Todas las lecciones de Arquitectura de juegos en Unity