Oggetti da raccogliere
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 17 di 71.
Un oggetto da raccogliere è un trigger con uno script proprio. Quando qualcosa vi entra, l'oggetto verifica che si tratti del giocatore, gli trasferisce il suo effetto e si distrugge. Lo script del giocatore conserva il risultato e mette a disposizione un metodo pubblico per applicarlo. Questo kit medico cura qualunque 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 verso il kit, quindi può raccoglierlo solo un oggetto con uno script Health, mentre un giocatore con la salute al massimo lascia il kit lì per dopo. Il kit trova il giocatore tramite other, quindi non serve assegnare alcun riferimento nell'Inspector e un livello può contenerne cinquanta. Heal è public perché viene chiamato da un altro script, e il limite a 100 si trova in Health, l'unico punto che gestisce hp. Destroy(gameObject) rimuove il kit; Destroy(other.gameObject) rimuoverebbe il giocatore.
Sfida
FacileFai in modo che le casse di munizioni ricarichino il Blaster (ammo 4, maxAmmo 10).
- In
Blaster.cs, aggiungipublic int AddAmmo(int amount):int taken = Mathf.Min(amount, maxAmmo - ammo);, aggiungi il valore aammo, registra"Ammo: " + ammoe restituiscitaken. - In
AmmoCrate.cs, quandoother.TryGetComponent(out Blaster blaster), chiamablaster.AddAmmo(amount);eDestroy(gameObject);.
Premi «Gioca» e cammina verso destra: nella Console vengono visualizzati Ammo: 7, poi Ammo: 10. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class AmmoCrate : MonoBehaviour
{
public int amount = 3;
void OnTriggerEnter(Collider other)
{
// Il Blaster del giocatore raccoglie le munizioni e la cassa scompare
}
}
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 rovescia7Rotazione
Angoli di EuleroQuaternioniGuarda nella direzione in cui ti muoviRuota in modo fluidoRiepilogo: Torretta10Progetto: Fuga dall'arena
L'arenaCacciatori2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliereEsercitati da solo: Playground Unity