Menu
CoddyTech

Il corridore

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 60 di 67.

In questo capitolo realizzerai un piccolo gioco, Dodge the Blocks. Guiderai un corridore lungo una corsia mentre dei blocchi cadono dal cielo: basta un tocco per terminare la corsa. L’intero gioco è contenuto in un solo script, Runner, che acquisisce una funzionalità in ogni lezione: sterzare, far cadere i blocchi, rimuoverli, gestire l’impatto e tenere il punteggio.

La prima funzionalità consiste nello sterzare restando sulla corsia, usando Mathf.Clamp(value, min, max) di Catch the Star: restituisce min quando il valore è inferiore all’intervallo, max quando è superiore e, altrimenti, il valore stesso. La posizione del clamp è importante. Questo indicatore di carica si riempie mentre tieni premuto Space, si svuota 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 clamp viene applicato dopo la modifica. Se venisse applicato prima, 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 di nuovo il risultato alla variabile.

challenge icon

Sfida

Medio

Inizia Dodge the Blocks con il corridore. L'Inspector assegna allo script Runner speed (6) e laneEdge (4).

  • Le frecce sinistra e destra muovono il corridore lungo l'asse x a speed unità al secondo.
  • La sua x non scende mai sotto -laneEdge né supera laneEdge, quindi rimane sulla corsia.

Premi Play, fai clic sul gioco e corri fino a entrambe le estremità della corsia, poi premi Check.

Provalo tu

using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;

    void Update()
    {
        // muovi lungo x con le frecce, poi mantieni x nella corsia
    }
}
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 Fondamenti di scripting in Unity