Comer
Lição 6 de 14 do curso Jogo 3D da Cobrinha 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);
}Desafio
MédioA cobra come a comida e marca um ponto.
- Em
GameManager, adicionepublic static GameManager Instance;, definido emAwake(), eprivate int score; public bool IsFood(Vector3 cell): verdadeiro quando cell é a posição da comida.public void Eat(): mais um ponto, depoisMoveFood().- Em
Snake, no final deStep(): seGameManager.Instance.IsFood(next), chameEat().
Pressione “Jogar” e conduza a cobra até a comida: ela salta para uma nova célula. Depois, clique em “Verificar”.
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);
}
}
Todas as lições de Jogo 3D da Cobrinha na Unity
Pratique por conta própria: Playground de Unity