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.
Desafío
IntermedioCompleta GameManager. La escena asigna a snake la Snake de la cabeza y a foodPrefab una esfera roja.
- Añade
public Snake snake;,public GameObject foodPrefab;yprivate Transform food;. - En
Start(), instanciafoodPrefab, guarda su Transform enfoody llama aMoveFood(). - Escribe
void MoveFood(): colocafooden una celda aleatoria, con x y z cada una entre-snake.edgeysnake.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.
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.