Makan
Pelajaran 6 dari 14 dalam kursus Game Unity: Snake 3D di Coddy.
Ular makan saat kepalanya melangkah ke sel makanan. Keduanya berada pada bilangan bulat, jadi membandingkan posisi mereka dengan == aman: == milik Unity pada Vector3 menganggap dua posisi sama jika jaraknya kurang dari 0.00001, dan penambahan sel utuh tidak pernah menghasilkan jarak sekecil itu.
Ular tahu kapan ia melangkah; GameManager tahu di mana makanan berada dan menyimpan skor. Jadi setelah setiap langkah, ular bertanya dan GameManager menjawab: IsFood(cell) mengembalikan bool, dan Eat() menambahkan satu poin lalu memindahkan makanan. Ular mengakses GameManager melalui Instance statis, singleton yang kamu temui dalam perjalanan C# for Unity.
Tanyakan tentang sel yang dimasuki kepala setelah bergerak. Kunci di grid diambil dengan cara yang sama:
transform.position = next;
if (key.position == transform.position)
{
keysHeld++;
key.gameObject.SetActive(false);
}Tantangan
SedangDi GameManager:
- Tambahkan
public static GameManager Instance;, atur nilainya diAwake(), lalu tambahkanprivate int score;. - Tulis
public bool IsFood(Vector3 cell): bernilai true saatcelladalah posisi makanan. - Tulis
public void Eat(): tambahkan 1 kescoredan panggilMoveFood().
Di Snake, di akhir Step(), setelah kepala bergerak: jika cell kepala adalah makanan, panggil Eat().
Tekan Play dan arahkan ular ke makanan, lalu tekan Check.
Coba sendiri
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);
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.