Menu
CoddyTech

Comer

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

A cobra come quando sua cabeça entra na célula da comida. Ambas estão em números inteiros, então comparar suas posições com == é seguro: o == do Unity em Vector3 considera duas posições iguais quando estão a menos de 0.00001 de distância, e somar células inteiras nunca deixa uma diferença tão pequena.

A cobra sabe quando dá um passo; o GameManager sabe onde a comida está e mantém a pontuação. Então, após cada passo, a cobra pergunta, e o GameManager responde: IsFood(cell) retorna um bool, e Eat() adiciona um ponto e move a comida. A cobra acessa o GameManager por meio de uma Instance estática, o singleton que você conheceu na jornada de C# para Unity.

Verifique a célula em que a cabeça entrou, após o movimento. Uma chave em uma grade é coletada da mesma maneira:

transform.position = next;
if (key.position == transform.position)
{
    keysHeld++;
    key.gameObject.SetActive(false);
}
challenge icon

Desafio

Médio

Em GameManager:

  1. Adicione public static GameManager Instance;, defina-o em Awake() e adicione private int score;.
  2. Escreva public bool IsFood(Vector3 cell): verdadeiro quando cell for a posição da comida.
  3. Escreva public void Eat(): adicione 1 a score e chame MoveFood().

Em Snake, no final de Step(), depois que a cabeça tiver se movido: se a célula da cabeça for comida, chame Eat().

Pressione Play e mova-se até a comida; em seguida, pressione Check.

Experimente você mesmo

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public Snake snake;
    public GameObject foodPrefab;
    private Transform food;

    void Start()
    {
        food = Instantiate(foodPrefab).transform;
        MoveFood();
    }

    void MoveFood()
    {
        int x = Random.Range(-snake.edge, snake.edge + 1);
        int z = Random.Range(-snake.edge, snake.edge + 1);
        food.position = new Vector3(x, 0f, z);
    }
}
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