Menu
CoddyTech

El tablero

Lección 1 de 14 del curso Juego de Unity: Snake 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 comida, crece y muere al tocar las paredes o su propia cola. Dos scripts lo ejecutan: Snake en la cabeza y GameManager, que permanece vacío hasta que llegue la comida en el siguiente capítulo.

Las celdas tienen una unidad de ancho y están centradas en números enteros: x y z van de -7 a 7, y cada celda está en y 0. La serpiente nunca se desliza entre celdas. Salta una celda entera en cada tick, un ritmo fijo como 0.15 segundos, y permanece quieta entre uno y otro.

En Unity, un ritmo se implementa con un temporizador: suma Time.deltaTime en cada fotograma y, cuando el temporizador alcanza el intervalo, actúa y resta el intervalo. Esta baliza parpadea una vez por segundo:

public Light beacon;
public float interval = 1f;
private float timer;

void Update()
{
    timer += Time.deltaTime;
    if (timer >= interval)
    {
        timer -= interval;
        beacon.enabled = !beacon.enabled;
    }
}

Restar el intervalo, en lugar de volver a establecer el temporizador en 0, conserva la parte del fotograma que excedió el intervalo, para que el ritmo no se retrase gradualmente.

challenge icon

Desafío

Fácil

La cabeza es un cubo verde en la celda (-3, 0, 0). Snake tiene tick, 0.15 segundos, y direction, Vector3.right.

  1. Añade un private float timer;.
  2. En Update(), incrementa el temporizador en Time.deltaTime. Cuando llegue a tick, réstale tick y llama a Step().
  3. En Step(), mueve la cabeza una celda a lo largo de direction.

Pulsa Play y observa cómo la cabeza avanza hacia la derecha. Por ahora, sale del tablero: las paredes se incorporan en la lección 4. Después pulsa Check.

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
    }
}
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