Menu
CoddyTech

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.

challenge icon

Sfida

Facile

La testa è un cubo verde sulla cella (-3, 0, 0). Snake ha tick, 0,15 secondi, e direction, Vector3.right.

  1. Aggiungi private float timer;.
  2. In Update(), incrementa il timer di Time.deltaTime. Quando raggiunge tick, sottrai tick e chiama Step().
  3. In Step(), sposta la testa di una cella lungo direction.

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
    }
}
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 Gioco in Unity: Snake 3D