Menu
CoddyTech

Comer

Lección 6 de 14 del curso Juego de Unity: Snake 3D de Coddy.

La serpiente come cuando su cabeza pisa la casilla de la comida. Ambas posiciones son números enteros, así que es seguro compararlas con ==: el == de Unity para Vector3 considera que dos posiciones son iguales cuando están a menos de 0.00001 de distancia, y sumar casillas enteras nunca deja una diferencia tan pequeña.

La serpiente sabe cuándo da un paso; GameManager sabe dónde está la comida y lleva la puntuación. Así que, después de cada paso, la serpiente pregunta y GameManager responde: IsFood(cell) devuelve un bool, y Eat() suma un punto y mueve la comida. La serpiente accede a GameManager a través de un Instance estático, el singleton que conociste en el recorrido de C# para Unity.

Pregunta por la casilla en la que ha entrado la cabeza, después de moverse. Una llave en una cuadrícula se recoge de la misma manera:

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

Desafío

Intermedio

En GameManager:

  1. Añade public static GameManager Instance;, asígnale un valor en Awake() y añade private int score;.
  2. Escribe public bool IsFood(Vector3 cell): verdadero cuando cell sea la posición de la comida.
  3. Escribe public void Eat(): suma 1 a score y llama a MoveFood().

En Snake, al final de Step(), después de que la cabeza se haya movido: si la casilla de la cabeza contiene comida, llama a Eat().

Pulsa Play y guía a la serpiente hasta la comida; después, pulsa Check.

Pruébalo tú mismo

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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Juego de Unity: Snake 3D