Riepilogo: pool di proiettili
Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 40 di 50.
Sfida
MedioAllenamento 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 unObjectPool<Bullet>che crea proiettili dabulletPrefab, 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), chiamaHit()sul bersaglio e torna subito al pool. Un proiettile che non colpisce nulla torna al pool dopolife(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
1Componenti, non gerarchie
Componenti piccoliUno script base per i nemiciComponenti astrattiComponenti che collaboranoRiepilogo: torretta modulare4Dati serializzati
Classi serializzabiliListe nell'InspectorEnum nell'InspectorRiepilogo: tabella del bottino7Macchine a stati
Gli stati come classiUna macchina a statiTransizioniIntelligenze dei nemiciRiepilogo: stati della porta10Progetto: Sopravvissuto nell’arena
L’eroeTipi di nemici5ScriptableObjects
Asset di datiStatistiche delle armiImpostazioni condiviseOndate come datiRiepilogo: database degli oggetti3Eventi
Eventi C# in UnityIscriviti in OnEnableCampi UnityEventGli eventi guidano l'interfaccia utenteRiepilogo: popup dell'obiettivo6Salvare con JSON
JsonUtilitySalva la partitaCaricamento e valori predefinitiRiepilogo: slot di salvataggio9Pooling degli oggetti
Perché usare un pool di oggettiUn pool con una codaObjectPool di UnityRiepilogo: pool di proiettili