Menu
CoddyTech

Mangiare

Lezione 6 di 14 del corso Gioco in Unity: Snake 3D di Coddy.

Il serpente mangia quando la sua testa entra nella cella del cibo. Entrambi si trovano su numeri interi, quindi confrontare le loro posizioni con == è sicuro: in Unity, == su Vector3 considera uguali due posizioni quando distano meno di 0.00001, e aggiungere celle intere non crea mai una distanza così piccola.

Il serpente sa quando fa un passo; GameManager sa dov'è il cibo e tiene il punteggio. Quindi, dopo ogni passo, il serpente chiede e GameManager risponde: IsFood(cell) restituisce un bool, e Eat() aggiunge un punto e sposta il cibo. Il serpente raggiunge GameManager tramite un Instance statico, il singleton che hai incontrato nel percorso C# for Unity.

Verifica la cella in cui è entrata la testa, dopo lo spostamento. Una chiave su una griglia si raccoglie allo stesso modo:

transform.position = next;
if (key.position == transform.position)
{
    keysHeld++;
    key.gameObject.SetActive(false);
}
challenge icon

Sfida

Medio

In GameManager:

  1. Aggiungi public static GameManager Instance;, impostalo in Awake() e aggiungi private int score;.
  2. Scrivi public bool IsFood(Vector3 cell): vero quando cell è la posizione del cibo.
  3. Scrivi public void Eat(): aggiungi 1 a score e chiama MoveFood().

In Snake, alla fine di Step(), dopo che la testa si è spostata: se la cella della testa contiene del cibo, chiama Eat().

Premi Play e guida il serpente fino al cibo, poi premi Check.

Provalo tu

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public Snake snake;
    public GameObject foodPrefab;
    private Transform food;

    void Start()
    {
        food = Instantiate(foodPrefab).transform;
        MoveFood();
    }

    void MoveFood()
    {
        int x = Random.Range(-snake.edge, snake.edge + 1);
        int z = Random.Range(-snake.edge, snake.edge + 1);
        food.position = new Vector3(x, 0f, z);
    }
}
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