Mangiare
Lezione 6 di 14 del corso Gioco Unity: Snake 3D di Coddy.
Il serpente mangia quando la sua testa entra nella cella del cibo. Entrambi si trovano su numeri interi, quindi confrontare le loro posizioni con == è sicuro: in Unity, == su Vector3 considera uguali due posizioni quando distano meno di 0.00001, e aggiungere celle intere non crea mai una distanza così piccola.
Il serpente sa quando fa un passo; GameManager sa dov'è il cibo e tiene il punteggio. Quindi, dopo ogni passo, il serpente chiede e GameManager risponde: IsFood(cell) restituisce un bool, e Eat() aggiunge un punto e sposta il cibo. Il serpente raggiunge GameManager tramite un Instance statico, il singleton che hai incontrato nel percorso C# for Unity.
Verifica la cella in cui è entrata la testa, dopo lo spostamento. Una chiave su una griglia si raccoglie allo stesso modo:
transform.position = next;
if (key.position == transform.position)
{
keysHeld++;
key.gameObject.SetActive(false);
}Sfida
MedioIl serpente mangia il cibo e guadagna un punto.
- In
GameManager, aggiungipublic static GameManager Instance;, impostandolo inAwake(), eprivate int score; public bool IsFood(Vector3 cell): vero quando cell è nella posizione del cibo.public void Eat(): un punto in più, poiMoveFood().- In
Snake, alla fine diStep(): seGameManager.Instance.IsFood(next), chiamaEat().
Premi «Gioca» e guida il serpente fino al cibo: salta in una nuova cella. Poi premi «Verifica».
Provalo tu
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);
}
}
Tutte le lezioni di Gioco Unity: Snake 3D
Esercitati da solo: Playground Unity