Menu
CoddyTech

Objets à ramasser

Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 17 sur 63.

Un objet à ramasser est un déclencheur doté de son propre script. Quand quelque chose entre en collision avec lui, l’objet vérifie qu’il s’agit du joueur, lui transmet son effet et se détruit. Le script du joueur conserve le résultat et propose une méthode publique pour cela. Ce kit de soins soigne tout objet qui possède un script Health :

// HealthPack.cs
public int amount = 25;

void OnTriggerEnter(Collider other)
{
    if (other.TryGetComponent(out Health health) && health.hp < 100)
    {
        health.Heal(amount);
        Destroy(gameObject);
    }
}
// Health.cs, sur le joueur
public int hp = 50;

public void Heal(int amount)
{
    hp = Mathf.Min(hp + amount, 100);
    Debug.Log("HP: " + hp);
}

other.TryGetComponent(out Health health) renvoie false pour une caisse qui glisse jusqu’au kit. Seul un objet doté d’un script Health peut donc le ramasser, et un joueur en pleine santé laisse le kit sur place pour plus tard. Le kit trouve le joueur grâce à other : aucun kit n’a donc besoin d’une référence dans l’Inspector, et un niveau peut en contenir cinquante. Heal est public parce qu’un autre script l’appelle, et la limite de 100 se trouve dans Health, le seul endroit qui gère hp. Destroy(gameObject) supprime le kit ; Destroy(other.gameObject) supprimerait le joueur.

challenge icon

Défi

Facile

Le joueur porte un Blaster : ammo (4 au départ) et maxAmmo (10). Les flèches le déplacent et la barre d’espace tire un projectile, et les deux sont affichés. Faites en sorte que les caisses de munitions le remplissent :

  • Dans Blaster.cs, ajoutez une méthode publique int AddAmmo(int amount). Elle prend autant de amount que possible sans dépasser maxAmmo, affiche le nouveau total, par exemple Ammo: 7, et renvoie la quantité prise.
  • Dans AmmoCrate.cs, lorsque le joueur entre dans une caisse, proposez au Blaster la valeur amount de la caisse et soustrayez la quantité prise. Une caisse désormais vide est supprimée ; une caisse qui contient encore des munitions reste en place avec la quantité restante, pour une prochaine visite.

La première caisse contient 3 munitions et la seconde 5. Appuyez sur Jouer, avancez vers la droite, tirez quelques coups et retournez dans la seconde caisse, puis appuyez sur Vérifier.

Essayez vous-même

using UnityEngine;

public class AmmoCrate : MonoBehaviour
{
    public int amount = 3;

    void OnTriggerEnter(Collider other)
    {
        // Le Blaster du joueur prend ce qu'il peut contenir ; la caisse garde le reste et disparaît une fois vide
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Physique et gameplay