Menu
CoddyTech

Tower Defense Ringan

Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 48 dari 50.

Creep berjalan di sepanjang jalan menuju markasmu, dan sebuah tower menjaganya. Tower menembakkan bolt ke creep terdekat selama creep itu berada dalam jangkauan, dan setiap creep yang dikalahkannya memberikan gold. Tekan Space untuk menggunakan gold membeli level tower berikutnya: setiap level memiliki jangkauan lebih jauh, menembak lebih cepat, atau menghasilkan kerusakan lebih besar. Creep yang mencapai markas akan berhasil masuk. Level-level tersebut merupakan data game yang dapat disesuaikan desainer melalui sebuah asset tanpa mengubah kode, dan tower menembakkan banyak bolt, jadi tower menggunakan kembali bolt dari sebuah pool alih-alih membuat dan menghancurkan satu bolt untuk setiap tembakan.

Tulis dua script: TowerData, tipe asset, dan Tower. Creep, Bolt, dan CreepSpawner sudah siap.

challenge icon

Tantangan

Sulit

Inspector menyediakan Tower data (asset Arrow), boltPrefab, dan infoText. Baca tombol Space melalui Keyboard.current dari Input System.

  • Di TowerData.cs: sebuah class TowerLevel yang dapat ditampilkan Inspector, dengan public float range, public float fireEvery, public int damage, dan public int cost (harga untuk mencapai level tersebut), serta TowerData, sebuah ScriptableObject dengan entri menu Create dan public List<TowerLevel> levels. Asset Arrow berisi tiga level: range 4, setiap 1 s, damage 1, cost 0; range 5, setiap 0.6 s, damage 1, cost 6; range 6, setiap 0.4 s, damage 2, cost 12.
  • Tower dimulai pada level pertama dengan 0 gold, dan infoText menampilkan keduanya sebagai Level 1, 0 gold setiap kali nilainya berubah.
  • Ketika waktu fireEvery pada level tersebut telah berlalu sejak tembakan terakhir dan ada creep dalam jangkauan (collider creep berada dalam range dari tower, seperti yang ditemukan oleh Physics.OverlapSphere), tower menembak creep yang paling dekat dengannya. Tower mengambil bolt dari ObjectPool<Bolt>, menempatkannya di tower, lalu memanggil bolt.Launch(creep, damage, pool.Release): bolt memanggil argumen terakhir itu saat selesai, yang mengembalikannya ke pool. Bolt dinonaktifkan saat menunggu di pool dan diaktifkan saat diambil.
  • Setiap creep yang mati memberikan bounty-nya dalam gold: dengarkan static event Creep.Killed.
  • Space membeli level berikutnya jika level itu tersedia dan gold mencukupi cost-nya: biaya dikurangi dari gold, lalu tower naik level dan mencatatnya, seperti Tower level 2. Jika tidak, Space tidak melakukan apa pun.

Tekan Jalankan, tahan di jalan dan lakukan upgrade, lalu tekan Periksa.

Coba sendiri

using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Pool;
using TMPro;

public class Tower : MonoBehaviour
{
    [SerializeField] private TowerData data;
    [SerializeField] private Bolt boltPrefab;
    [SerializeField] private TMP_Text infoText;

    private int level;
    private int gold;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Arsitektur Game di Unity