Menu
CoddyTech

Récapitulatif : pool de projectiles

Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 40 sur 50.

challenge icon

Défi

Moyen

Entraînement au tir. Les flèches font glisser le Tank vers la gauche et vers la droite (prêt), et les deux cibles rouges ont un script Target avec Hit() (prêt). Faites tirer au tank des balles mises en pool :

  • Dans Tank.cs, conservez un ObjectPool<Bullet> qui crée les balles à partir de bulletPrefab, les active lorsqu’elles sont retirées du pool et les désactive lorsqu’elles y retournent, détruit celles qu’il élimine et conserve au maximum 4 balles en réserve.
  • La barre d’espace prend une balle dans le pool et la lance à 1 unité devant le tank.
  • Dans Bullet.cs, une balle vole vers l’avant (+z) à la vitesse speed (15). Lorsqu’elle touche un objet doté d’un script Target (le collider de la balle est un trigger), elle appelle Hit() sur la cible et retourne immédiatement dans le pool. Une balle qui ne touche rien retourne dans le pool après life (1) seconde.
  • Chaque tir donne à la balle toute sa durée de vie, même lorsqu’elle est réutilisée, et une balle retourne dans le pool une seule fois par tir.

Appuyez sur Play, tirez sur les deux cibles, puis appuyez sur Check.

Essayez vous-même

using UnityEngine;
using UnityEngine.Pool;

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

    // Avancer tout droit ; retourner dans le pool en touchant un Target ou après life secondes
}

Toutes les leçons de Architecture de jeu dans Unity