Il raccoglitore
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 50 di 85.
Questo capitolo crea un piccolo gioco, Catch the Star, una funzionalità per lezione: una stella cade, tu fai scorrere un acchiappatore a sinistra e a destra sotto di essa, ogni presa assegna punti e fa cadere la stella successiva più velocemente, e tre mancate prese terminano la partita. Tutto è contenuto in un unico script, Catcher, sull'acchiappatore. La prima funzionalità è il movimento: l'acchiappatore scorre con i tasti freccia e non lascia mai il pavimento.
Mantenere un numero entro determinati limiti è il compito di Mathf.Clamp(value, min, max). Restituisce min quando il valore è inferiore a min, max quando è superiore a max e, altrimenti, il valore stesso. Questa telecamera segue il giocatore mentre sale su una torre, ma la sua altezza rimane tra 2 e 12:
[SerializeField] private Transform player;
void Update()
{
float y = Mathf.Clamp(player.position.y, 2f, 12f);
transform.position = new Vector3(transform.position.x, y, transform.position.z);
}Clamp restituisce un nuovo numero e non modifica nulla da solo, quindi assegna il risultato. Applica Clamp dopo tutte le modifiche del fotogramma e prima di riscrivere la posizione, così nessun fotogramma mostrerà mai l'oggetto oltre il suo limite.
Sfida
MedioFai muovere il ricevitore, la barra blu.
- In
Update(), copiatransform.position.xinfloat x, poi aggiungi o sottraispeed * Time.deltaTimein base alla freccia tenuta premuta. - Mantieni il ricevitore largo 2 unità sul pavimento (x da -5 a 5):
x = Mathf.Clamp(x, -4f, 4f);. - Riscrivi
xintransform.position, mantenendo y e z.
Premi «Gioca» e tieni premute le frecce: si ferma ai bordi. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Catcher : MonoBehaviour
{
[SerializeField] private float speed = 6f;
void Update()
{
// Frecce: scorri lungo x a speed unità al secondo.
// Mantieni l'intero catcher sul pavimento (x da -5 a 5, il catcher è largo 2).
}
}
Tutte le lezioni di Fondamenti di scripting in Unity
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity