Menu
CoddyTech

Ye

Coddy'nin Unity'de 3D Yılan Oyunu kursunda ders 6 / 14.

Yılan, başı yiyeceğin hücresine geldiğinde onu yer. İkisi de tam sayılar üzerinde durduğundan, konumlarını == ile karşılaştırmak güvenlidir: Unity'de Vector3 için ==, iki konum arasındaki mesafe 0.00001'den küçük olduğunda bu konumları eşit sayar ve tam hücreler eklemek asla bu kadar küçük bir boşluk bırakmaz.

Yılan ne zaman adım attığını bilir; yiyeceğin nerede olduğunu ve skoru ise GameManager bilir. Bu yüzden yılan her adımdan sonra sorar, GameManager da yanıtlar: IsFood(cell) bir bool döndürür; Eat() ise bir puan ekler ve yiyeceği taşır. Yılan, C# for Unity yolculuğunda tanıştığın singleton olan statik Instance üzerinden GameManager'a ulaşır.

Hamlenin ardından, başın girdiği hücreyi kontrol et. Bir ızgaradaki anahtar da aynı şekilde alınır:

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

Görev

Orta

GameManager içinde:

  1. public static GameManager Instance; ekleyin, bunu Awake() içinde ayarlayın ve private int score; ekleyin.
  2. public bool IsFood(Vector3 cell) metodunu yazın: cell yiyeceğin konumundaysa true döndürsün.
  3. public void Eat() metodunu yazın: score değerini 1 artırın ve MoveFood() çağırın.

Snake içinde, Step() metodunun sonunda, kafa hareket ettikten sonra: kafanın bulunduğu hücrede yiyecek varsa Eat() çağırın.

Oynat'a basın ve yılanı yiyeceğin üzerine sürün, ardından Kontrol Et'e basın.

Kendin dene

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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Unity'de 3D Yılan Oyunu bölümündeki tüm dersler