Menu
CoddyTech

Tre corsie

Lezione 1 di 20 del corso Gioco Unity: Corsie nel cielo di Coddy.

In questo corso realizzi un intero gioco, una funzionalità per lezione. Un corridore sfreccia lungo una strada sospesa in alto nel cielo. Barriere, sbarre e muri gli vengono incontro, le corsie sono fiancheggiate da monete e la strada diventa più veloce più a lungo resisti.

Il progetto ha già quattro script: Runner sul giocatore, Road, GameManager e Coin. Per ora sono quasi tutti vuoti e si riempiranno lezione dopo lezione. Un quinto script, CameraFit sulla videocamera, è già fornito: allarga la visuale su uno schermo di telefono alto, così da includere tutte e tre le corsie, e non dovrai modificarlo.

Il corridore non avanza mai. Si sposta solo tra tre corsie: sinistra, centrale e destra. Mantieni la corsia come numero intero, -1, 0 o 1, e calcola la posizione corrispondente sull'asse x:

float targetX = lane * laneWidth;

Il corridore ha un CharacterController, quindi si sposta con controller.Move(motion): Move prende la distanza da percorrere in questo fotogramma, non la posizione in cui arrivare. Per raggiungere targetX, spostati della differenza tra quel valore e la posizione attuale del corridore:

float x = targetX;
Vector3 move = new Vector3(x - transform.position.x, 0f, 0f);
controller.Move(move);

Mathf.Max(-1, lane - 1) restituisce lane - 1, ma mai un valore inferiore a -1, quindi non esiste una corsia oltre quella di sinistra.

challenge icon

Sfida

Facile
  1. In Runner.Update, quando premi A o la freccia sinistra (Input.GetKeyDown), imposta lane = Mathf.Max(-1, lane - 1).
  2. Quando premi D o la freccia destra, imposta lane = Mathf.Min(1, lane + 1).
  3. Poi calcola targetX e sposta il corridore lì con controller.Move, come sopra.
  4. Premi «Gioca» e prova A e D.

Provalo tu

using UnityEngine;

public class Runner : MonoBehaviour
{
    public float laneWidth = 2.5f;

    public int lane;

    private CharacterController controller;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // cambia corsia qui
    }
}

Tutte le lezioni di Gioco Unity: Corsie nel cielo

Esercitati da solo: Playground Unity