La tavola
Lezione 1 di 14 del corso Gioco 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, cresce e muore contro i muri o la propria coda. Snake controlla la testa; GameManager rimane vuoto finché non arriva il cibo. «Gioca» avvia il gioco; «Verifica» valuta il codice.
Le celle sono larghe un’unità, con coordinate intere da -7 a 7. Il serpente non scivola: salta di una cella intera a ogni tick, un intervallo fisso, e resta fermo nel frattempo. Un intervallo è un timer: aggiungi Time.deltaTime a ogni fotogramma e, quando raggiunge l’intervallo, agisci e sottrai l’intervallo:
timer += Time.deltaTime;
if (timer >= 0.5f)
{
timer -= 0.5f;
Step();
}Sottrarre l’intervallo, invece di impostare il timer su 0, conserva la frazione di fotogramma che lo ha superato, così l’intervallo non slitta in ritardo. Usa il campo tick, non un numero.
Sfida
FacileFai avanzare la testa di una casella a ogni tick.
- In
Snake, aggiungiprivate float timer; - In
Update(), aggiungiTime.deltaTimea timer; quandotimer >= tick, sottrai tick e chiamaStep(). - In
Step(), aggiungidirectionatransform.position.
Premi «Gioca»: la testa avanza verso destra, una casella alla volta, per ora uscendo dal tabellone. Poi premi «Verifica».
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 Step() una volta
}
void Step()
{
// Sposta la testa di una cella lungo direction
}
}
Tutte le lezioni di Gioco Unity: Snake 3D
Esercitati da solo: Playground Unity