Il tabellone
Lezione 1 di 14 del corso Gioco in Unity: Snake 3D di Coddy.
In questo corso costruisci Snake in 3D: un serpente di cubi su una griglia di 15 per 15 vista dall’alto. Si muove di una cella alla volta, gira con le frecce o con WASD, mangia cibo, cresce e muore se tocca i muri o la propria coda. A gestirlo sono due script: Snake, sulla testa, e GameManager, che resta vuoto finché il cibo non arriva nel prossimo capitolo.
Le celle sono larghe un’unità e centrate sui numeri interi: x e z vanno da -7 a 7, e ogni cella si trova a y 0. Il serpente non scivola mai tra una cella e l’altra. Salta di una cella intera a ogni battito, a intervalli fissi, per esempio ogni 0.15 secondi, e resta fermo nel frattempo.
In Unity, un battito è un timer: aggiungi Time.deltaTime a ogni fotogramma e, quando il timer raggiunge l’intervallo, esegui un’azione e sottrai l’intervallo. Questo segnalatore lampeggia una volta al secondo:
public Light beacon;
public float interval = 1f;
private float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
timer -= interval;
beacon.enabled = !beacon.enabled;
}
}Sottrarre l’intervallo, invece di riportare il timer a 0, conserva la parte di fotogramma che ha superato l’intervallo, così il battito non slitta in ritardo.
Sfida
FacileLa testa è un cubo verde sulla cella (-3, 0, 0). Snake ha tick, 0,15 secondi, e direction, Vector3.right.
- Aggiungi
private float timer;. - In
Update(), incrementa il timer diTime.deltaTime. Quando raggiungetick, sottraiticke chiamaStep(). - In
Step(), sposta la testa di una cella lungodirection.
Premi Play e guarda la testa avanzare verso destra. Per ora esce dal tabellone: i muri arriveranno nella lezione 4. Poi premi Check.
Provalo tu
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // secondi tra due passi
private Vector3 direction = Vector3.right;
void Update()
{
// Ogni tick secondi, esegui una volta Step()
}
void Step()
{
// Sposta la testa di una cella lungo direction
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.