El tablero
Lección 1 de 14 del curso Juego de Unity: Serpiente 3D de Coddy.
En este curso construirás Snake en 3D: una serpiente de cubos en un tablero de 15 por 15 visto desde arriba. Se mueve una celda a la vez, gira con las flechas o WASD, come, crece y muere al chocar con las paredes o con su propia cola. Snake controla la cabeza; GameManager permanece vacío hasta que aparezca la comida. «Jugar» ejecuta el juego; «Comprobar» evalúa el código.
Las celdas tienen una unidad de ancho y están en números enteros de -7 a 7. La serpiente nunca se desliza: salta una celda entera en cada tic, un intervalo fijo, y permanece quieta entre ellos. Un intervalo es un temporizador: suma Time.deltaTime en cada fotograma y, cuando alcanza el intervalo, actúa y resta el intervalo:
timer += Time.deltaTime;
if (timer >= 0.5f)
{
timer -= 0.5f;
Step();
}Restar el intervalo, en lugar de poner el temporizador en 0, conserva la fracción del fotograma que lo sobrepasó, para que el intervalo no se retrase. Usa el campo tick, no un número.
Desafío
FácilHaz que la cabeza avance una celda en cada tic.
- En
Snake, añadeprivate float timer; - En
Update(), añadeTime.deltaTimea timer; cuandotimer >= tick, réstale tick y llama aStep(). - En
Step(), añadedirectionatransform.position.
Pulsa «Jugar»: la cabeza avanza hacia la derecha, celda por celda, y por ahora sale del tablero. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // segundos entre dos pasos
private Vector3 direction = Vector3.right;
void Update()
{
// Cada tick segundos, ejecuta Step() una vez
}
void Step()
{
// Mueve la cabeza una celda en la dirección de direction
}
}
Todas las lecciones de Juego de Unity: Serpiente 3D
Practica por tu cuenta: Playground de Unity