Menu
CoddyTech

Recapitulação: pool de projéteis

Parte da seção Arquitetura de jogos no Unity do Journey de Unity da Coddy. Lição 40 de 50.

challenge icon

Desafio

Médio

Pratique de tiro. As setas deslizam o Tank para a esquerda e para a direita (pronto), e os dois alvos vermelhos têm um script Target com Hit() (pronto). Faça o tanque disparar balas do pool:

  • Em Tank.cs, mantenha um ObjectPool<Bullet> que cria balas a partir de bulletPrefab, ativa-as quando são retiradas e desativa-as quando voltam, destrói as que libera e mantém no máximo 4 balas sobressalentes.
  • A tecla Espaço retira uma bala do pool e a inicia a 1 unidade à frente do tanque.
  • Em Bullet.cs, uma bala voa para a frente (+z) a speed (15). Quando atinge algo com um script Target (o colisor da bala é um trigger), chama Hit() do alvo e volta imediatamente ao pool. Uma bala que não atinge nada volta após life (1) segundo.
  • Cada disparo dá à bala seu tempo de vida completo, inclusive quando reutilizada, e a bala volta ao pool uma vez por disparo.

Pressione Play, atire nos dois alvos e depois Check.

Experimente você mesmo

using UnityEngine;
using UnityEngine.Pool;

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

    // Voe para a frente; volte para o pool ao atingir um Target ou após life segundos
}

Todas as lições de Arquitetura de jogos no Unity