Il corridore
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 75 di 85.
Questo capitolo crea un piccolo gioco, Schiva i blocchi. Guida un corridore lungo una corsia mentre i blocchi cadono dal cielo: basta un tocco per terminare la corsa. L’intero gioco è contenuto in uno script, Runner, che acquisisce una funzionalità a ogni lezione: sterzare, far cadere i blocchi, eliminarli, gestire l’impatto e tenere il punteggio.
La prima funzionalità consiste nello sterzare restando sulla corsia, usando Mathf.Clamp(value, min, max) da Catch the Star: restituisce min quando il valore è inferiore all’intervallo, max quando è superiore e, altrimenti, il valore stesso. È importante dove si applica il limite. Questo indicatore di carica si riempie mentre tieni premuto Spazio, si scarica quando non lo tieni premuto e resta sempre tra 0 e 10:
[SerializeField] private float charge = 0f;
void Update()
{
if (Input.GetKey(KeyCode.Space))
{
charge += 4f * Time.deltaTime;
}
else
{
charge -= 2f * Time.deltaTime;
}
charge = Mathf.Clamp(charge, 0f, 10f);
transform.localScale = new Vector3(0.5f, charge, 0.5f);
}Il limite viene applicato dopo la modifica. Se lo applicassi per primo, il valore potrebbe superare il limite di un passo alla fine del frame e la barra verrebbe disegnata usando quel valore. Inoltre, Mathf.Clamp restituisce un nuovo numero invece di modificare la variabile che gli passi, quindi assegna il risultato di nuovo alla variabile.
Sfida
MedioAvvia Schiva i blocchi: guida il corridore lungo la sua corsia.
- In
Update(), copiatransform.positioninVector3 pe aggiungiInput.GetAxisRaw("Horizontal") * speed * Time.deltaTimeap.x. L’asse grezzo fa muovere alla massima velocità fin da subito. - Imposta
p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);, poitransform.position = p;.
Premi «Gioca», fai clic sul gioco e corri fino a entrambe le estremità: il corridore si ferma ai bordi. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Runner : MonoBehaviour
{
[SerializeField] private float speed = 6f;
[SerializeField] private float laneEdge = 4f;
void Update()
{
// sposta lungo x con le frecce, poi mantieni x nella corsia
}
}
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