Comida
Lição 5 de 14 do curso Jogo de Cobra 3D na Unity da Coddy.
A comida fica em uma célula aleatória. As células são números inteiros, então escolha x e z com a versão int de Random.Range. Com números inteiros, o máximo é excluído: Random.Range(1, 7) lança um dado, de 1 a 6, nunca 7. Para incluir um número, peça um a mais do que ele.
Com argumentos do tipo float, Random.Range retorna qualquer número entre eles, como 3.62, que não fica no meio de uma célula; assim, a cobra nunca encontraria a comida. Um baú em uma grade de 10 por 10 com células de 0 a 9:
int row = Random.Range(0, 10); // 0 a 9
int column = Random.Range(0, 10);
chest.position = new Vector3(column, 0f, row);O tabuleiro contém uma comida por vez, então o jogo a cria uma vez, em Start(), e a move sempre que precisa de um novo lugar. GameManager é responsável pela comida e lê o tamanho do tabuleiro a partir de edge da cobra, por meio de um campo snake.
Desafio
MédioPreencha GameManager. A cena define snake como a Snake da cabeça e foodPrefab como uma esfera vermelha.
- Adicione
public Snake snake;,public GameObject foodPrefab;eprivate Transform food;. - Em
Start(), instanciefoodPrefab, mantenha seu Transform emfoode chameMoveFood(). - Escreva
void MoveFood(): ele colocafoodem uma célula aleatória, com x e z cada um entre-snake.edgeesnake.edge, e y igual a 0.
Pressione Play e encontre a comida no tabuleiro; depois, pressione Check.
Experimente você mesmo
using UnityEngine;
public class GameManager : MonoBehaviour
{
// Gerencia o jogo: a comida, a pontuação e o fim de jogo. O Capítulo 2 completa essa parte.
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.