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 GameManager:

  1. Dodaj public static GameManager Instance;, ustaw ją w Awake() i dodaj private int score;.
  2. Napisz public bool IsFood(Vector3 cell): zwraca true, gdy cell jest pozycją jedzenia.
  3. Napisz public void Eat(): zwiększ score o 1 i wywołaj MoveFood().

W Snake, na końcu Step(), po przesunięciu głowy: jeśli pole zajmowane przez głowę zawiera jedzenie, wywołaj Eat().

Naciśnij Play i skieruj węża na jedzenie, a następnie naciśnij Check.

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);
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

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