Menembak
Pelajaran 9 dari 25 dalam kursus Game Unity: Tower Defense di Coddy.
Sebuah menara menembakkan Projectile ke sasarannya. Tembakan itu bergerak ke sana dengan MoveTowards, mengikuti target saat target berjalan, lalu melukainya ketika tiba. Tembakan itu tidak perlu tahu bahwa target yang terkena adalah Enemy: tembakan itu meminta IDamageable, yaitu antarmuka untuk apa pun yang bisa menerima kerusakan, sehingga apa pun yang menerapkannya bisa ditembak.
Target bisa mati saat tembakan masih melayang. Objek Unity yang dihancurkan dianggap sama dengan null, jadi tembakan memeriksa target == null terlebih dahulu lalu menghancurkan dirinya sendiri.
Untuk saat ini, menara menembak sekali setiap detik. Menara menyimpan waktu tembakan berikutnya:
if (Time.time >= nextShot)
{
Fire();
nextShot = Time.time + 1f;
}Tantangan
SedangMenara menembakkan panah sekali setiap detik.
EnemymengimplementasikanIDamageable:TakeDamage(int amount)mengurangihealth, lalu menghancurkan musuh saat nilainya 0 atau kurang.Projectile:Launch(Transform target, int damage)menyimpan keduanya;Updateterbang menuju target dengan kecepatanspeed, memanggilTakeDamage(damage)saat tiba, lalu menghancurkan dirinya sendiri, juga saat target sudah tidak ada.Tower: tambahkanpublic int damage = 2;dan[SerializeField] private Projectile projectilePrefab;; tembak seperti di atas daritransform.position + Vector3.up.
Tekan tombol “Main”: panah terbang dan Grunt tumbang. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
// Akan ditambahkan nanti: proyektil yang terbang dari menara menuju sasarannya.
public class Projectile : MonoBehaviour
{
}
Semua pelajaran di Game Unity: Tower Defense
Latihan sendiri: Playground Unity