Menu
CoddyTech

Jedz

Lekcja 6 z 14 w kursie Gra w Unity: Wąż 3D w Coddy.

Wąż zjada jedzenie, gdy jego głowa wchodzi na pole, na którym ono się znajduje. Oba znajdują się na liczbach całkowitych, więc porównywanie ich pozycji za pomocą == jest bezpieczne: operator == w Unity dla Vector3 uznaje dwie pozycje za równe, gdy dzieli je mniej niż 0.00001, a dodawanie całych pól nigdy nie tworzy tak małej różnicy.

Wąż wie, kiedy robi krok; GameManager wie, gdzie znajduje się jedzenie, i prowadzi wynik. Dlatego po każdym kroku wąż pyta, a GameManager odpowiada: IsFood(cell) zwraca wartość typu bool, a Eat() dodaje punkt i przenosi jedzenie. Wąż dociera do GameManagera przez statyczną właściwość Instance — singleton, który poznano na ścieżce C# for Unity.

Sprawdzaj pole, na które weszła głowa, po wykonaniu ruchu. Klucz na siatce podnosi się w ten sam sposób:

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

Wyzwanie

Średni

Wąż zjada jedzenie i zdobywa punkt.

  1. W GameManager dodaj public static GameManager Instance;, ustaw w Awake() oraz dodaj private int score;
  2. public bool IsFood(Vector3 cell): zwraca prawdę, gdy komórka jest pozycją jedzenia. public void Eat(): dodaje jeden punkt, a następnie wywołuje MoveFood().
  3. W Snake, na końcu Step(): jeśli GameManager.Instance.IsFood(next), wywołaj Eat().

Naciśnij „Graj” i skieruj węża na jedzenie: przeskoczy ono do nowej komórki. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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);
    }
}

Wszystkie lekcje w sekcji Gra w Unity: Wąż 3D

Poćwicz samodzielnie: Edytor online Unity