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.
Desafio
FácilA cabeça é um cubo verde na célula (-3, 0, 0). Snake tem tick, 0.15 segundos, e direction, Vector3.right.
- Adicione
private float timer;. - Em
Update(), incremente o timer comTime.deltaTime. Quando ele atingirtick, subtraiatickdele e chameStep(). - Em
Step(), mova a cabeça uma célula ao longo dedirection.
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
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.