Menu
CoddyTech

Riepilogo: pool di proiettili

Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 40 di 50.

challenge icon

Sfida

Medio

Allenamento al tiro. Le frecce spostano il Tank a sinistra e a destra (già pronto) e i due bersagli rossi hanno uno script Target con Hit() (già pronto). Fai sparare al tank proiettili gestiti da un pool:

  • In Tank.cs, mantieni un ObjectPool<Bullet> che crea proiettili da bulletPrefab, li attiva quando vengono prelevati e li disattiva quando vengono restituiti, distrugge quelli che rilascia e conserva al massimo 4 proiettili di riserva.
  • La barra spaziatrice preleva un proiettile dal pool e lo avvia a 1 unità davanti al tank.
  • In Bullet.cs, un proiettile vola in avanti (+z) alla velocità speed (15). Quando colpisce qualcosa con uno script Target (il collider del proiettile è un trigger), chiama Hit() sul bersaglio e torna subito al pool. Un proiettile che non colpisce nulla torna al pool dopo life (1) secondi.
  • Ogni colpo assegna al proiettile tutta la sua durata, anche se riutilizzato, e un proiettile torna al pool una sola volta per colpo.

Premi Play, spara a entrambi i bersagli, poi premi Check.

Provalo tu

using UnityEngine;
using UnityEngine.Pool;

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

    // Vola in avanti; torna nel pool quando colpisce un Target oppure dopo life secondi
}

Tutte le lezioni di Architettura dei giochi in Unity