Menu
CoddyTech

Oggetti da raccogliere

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 17 di 63.

Un oggetto raccoglibile è un trigger con uno script proprio. Quando qualcosa entra, l’oggetto raccoglibile verifica che si tratti del giocatore, gli trasferisce il suo effetto e si distrugge. Lo script del giocatore conserva il risultato e offre un metodo pubblico per applicarlo. Questo kit di pronto soccorso cura qualsiasi oggetto abbia uno 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, sul giocatore
public int hp = 50;

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

other.TryGetComponent(out Health health) restituisce false per una cassa che scivola sull’oggetto raccoglibile, quindi solo un oggetto con uno script Health può raccoglierlo, e un giocatore con la salute al massimo lascia lì il kit per dopo. Il kit trova il giocatore tramite other, quindi non è necessario assegnare alcun riferimento nell’Inspector e un livello può contenerne cinquanta. Heal è public perché viene chiamato da un altro script, e il limite di 100 si trova in Health, l’unico posto che gestisce hp. Destroy(gameObject) rimuove il kit; Destroy(other.gameObject) rimuoverebbe il giocatore.

challenge icon

Sfida

Facile

Il giocatore porta con sé un Blaster: ammo (4 all'inizio) e maxAmmo (10). Le frecce lo muovono e la barra spaziatrice spara, ed entrambi sono già scritti. Fai in modo che le casse di munizioni lo ricarichino:

  • In Blaster.cs, aggiungi un metodo pubblico int AddAmmo(int amount). Prende da amount quanto basta per non superare maxAmmo, registra il nuovo totale, ad esempio Ammo: 7, e restituisce la quantità presa.
  • In AmmoCrate.cs, quando il giocatore entra in una cassa, offri al Blaster il suo amount e sottrai la quantità presa. Una cassa ormai vuota viene rimossa; una con munizioni rimaste resta con la quantità residua, per una visita successiva.

La prima cassa contiene 3 munizioni e la seconda 5. Premi Play, cammina verso destra, spara alcuni colpi e torna camminando nella seconda cassa, poi premi Check.

Provalo tu

using UnityEngine;

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

    void OnTriggerEnter(Collider other)
    {
        // Il Blaster del giocatore prende quanto può contenere; la cassa conserva il resto e scompare quando è vuota
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fisica e gameplay