Menu
CoddyTech

Bar Nyawa

Pelajaran 16 dari 18 dalam kursus Game Unity: Tower Defense di Coddy.

Sebuah bar di atas setiap musuh menunjukkan sisa health-nya. Di dalam prefab musuh, bar ini terdiri dari dua kubus tipis: latar belakang gelap dan isian hijau di depannya. Lebar isian adalah sisa health dibagi health penuh, yaitu angka dari 0 sampai 1, lalu mengalikan skala x isian dengan angka itu membuatnya lebih pendek. Namun, kubus diskalakan dari titik tengahnya, jadi isian akan menyusut ke arah tengah dari kedua ujungnya. Isian berada di bawah object pivot kosong di tepi kiri bar, dan skrip menskalakan pivot sebagai gantinya: semua yang berada di bawahnya menyusut ke arah tepi tersebut, sehingga bar terkuras dari kanan.

Fraksi tersebut harus dihitung menggunakan float. health / data.maxHealth membagi dua int, dan C# membuang bagian pecahan dari pembagian int: 6 / 9 adalah 0, sehingga bar akan menunjukkan kosong setelah serangan pertama. Meng-cast salah satu sisi terlebih dahulu, (float)health / data.maxHealth, menghasilkan 0.67. Sebuah tangki air yang ketinggian airnya bertambah ke atas dari pivot di bagian bawah:

float level = (float)water / capacity;
waterPivot.localScale = new Vector3(1f, level, 1f);

Bar penuh tidak memberi tahu pemain apa pun, jadi bar mulai dalam keadaan tersembunyi: prefab menonaktifkannya, lalu serangan pertama mengaktifkannya. Object yang tidak aktif tidak menjalankan Update, tetapi method-nya tetap dapat dipanggil. Setiap musuh merupakan salinan prefab tersendiri, dengan bar-nya sendiri.

challenge icon

Tantangan

Sulit
  1. Di HealthBar, tambahkan Transform fill yang diserialisasi (Inspector akan mengisi FillPivot pada bar) dan public void Show(float fraction), yang mengaktifkan GameObject pada bar dan mengatur skala fill ke fraction pada sumbu x.
  2. Di Enemy, tambahkan field healthBar yang diserialisasi (sebuah HealthBar). Setiap kali TakeDamage mengurangi health, tampilkan sisa health sebagai pecahan dari maxHealth.

Setiap prefab enemy memiliki barnya sendiri: nonaktif, dengan skrip HealthBar, dan fill di bawah pivot pada tepi kiri. Tekan Play dan amati bar saat tower menembak, lalu pilih Periksa.

Coba sendiri

using UnityEngine;

// Akan dibuat nanti: bilah di atas musuh yang menunjukkan sisa kesehatannya.
public class HealthBar : MonoBehaviour
{
}
quiz iconUji dirimu

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

Semua pelajaran di Game Unity: Tower Defense