Menu
CoddyTech

O tabuleiro

Lição 1 de 14 do curso Jogo de Cobra 3D na Unity da Coddy.

Neste curso, você vai criar Snake em 3D: uma cobra feita de cubos em um tabuleiro de 15 por 15, visto de cima. Ela se move uma célula por vez, vira com as setas ou WASD, come comida, cresce e morre ao tocar nas paredes ou na própria cauda. Dois scripts controlam o jogo: Snake, na cabeça, e GameManager, que permanece vazio até a comida entrar em cena no próximo capítulo.

As células têm uma unidade de largura e ficam centralizadas em números inteiros: x e z vão de -7 a 7, e cada célula fica em y 0. A cobra nunca desliza entre as células. Ela salta uma célula inteira a cada pulso, uma batida fixa, como 0.15 segundos, e fica parada entre os pulsos.

Uma batida no Unity é um temporizador: some Time.deltaTime a cada quadro e, quando o temporizador atingir o intervalo, aja e subtraia o intervalo. Esta luz sinalizadora pisca uma 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;
    }
}

Subtrair o intervalo, em vez de redefinir o temporizador para 0, preserva a parte do quadro que ultrapassou o intervalo, para que a batida não atrase gradualmente.

challenge icon

Desafio

Fácil

A cabeça é um cubo verde na célula (-3, 0, 0). Snake tem tick, 0.15 segundos, e direction, Vector3.right.

  1. Adicione private float timer;.
  2. Em Update(), incremente o timer com Time.deltaTime. Quando ele atingir tick, subtraia tick dele e chame Step().
  3. Em Step(), mova a cabeça uma célula ao longo de direction.

Pressione Jogar e observe a cabeça avançar para a direita. Por enquanto, ela sai do tabuleiro: as paredes serão introduzidas na lição 4. Em seguida, pressione Verificar.

Experimente você mesmo

using UnityEngine;

public class Snake : MonoBehaviour
{
    public float tick = 0.15f;   // segundos entre dois passos
    private Vector3 direction = Vector3.right;

    void Update()
    {
        // A cada tick segundos, execute um Step()
    }

    void Step()
    {
        // Mova a cabeça uma célula na direção de direction
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Jogo de Cobra 3D na Unity