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.
Sfida
FacileIl 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 pubblicoint AddAmmo(int amount). Prende daamountquanto basta per non superaremaxAmmo, registra il nuovo totale, ad esempioAmmo: 7, e restituisce la quantità presa. - In
AmmoCrate.cs, quando il giocatore entra in una cassa, offri al Blaster il suoamounte 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
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliere