Menu
CoddyTech

Comida

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

La comida aparece en una celda aleatoria. Las celdas son números enteros, así que elige x y z con la versión int de Random.Range. Con enteros, el máximo queda excluido: Random.Range(1, 7) lanza un dado, del 1 al 6, nunca el 7. Para incluir un número, pide uno más que ese número.

Con argumentos de tipo float, Random.Range devuelve cualquier número intermedio, como 3.62, que no está en el centro de una celda, así que la serpiente nunca encontraría la comida. Un cofre en una cuadrícula de 10 por 10 con celdas de 0 a 9:

int row = Random.Range(0, 10);      // de 0 a 9
int column = Random.Range(0, 10);
chest.position = new Vector3(column, 0f, row);

El tablero contiene una comida a la vez, así que el juego la crea una vez, en Start(), y la mueve cada vez que necesita un nuevo lugar. GameManager es el propietario de la comida y lee el tamaño del tablero desde edge de la serpiente a través de un campo snake.

challenge icon

Desafío

Intermedio

Completa GameManager. La escena asigna a snake la Snake de la cabeza y a foodPrefab una esfera roja.

  1. Añade public Snake snake;, public GameObject foodPrefab; y private Transform food;.
  2. En Start(), instancia foodPrefab, guarda su Transform en food y llama a MoveFood().
  3. Escribe void MoveFood(): coloca food en una celda aleatoria, con x y z cada una entre -snake.edge y snake.edge, e y en 0.

Pulsa Play y encuentra la comida en el tablero; después, pulsa Check.

Pruébalo tú mismo

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // Gestiona el juego: la comida, la puntuación y el fin de la partida. El capítulo 2 completa esta clase.
}
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