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.
Sfida
Facile- In
Runner.Update, quando premi A o la freccia sinistra (Input.GetKeyDown), impostalane = Mathf.Max(-1, lane - 1). - Quando premi D o la freccia destra, imposta
lane = Mathf.Min(1, lane + 1). - Poi calcola
targetXe sposta il corridore lì concontroller.Move, come sopra. - 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