Bilah Kesehatan
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 10 dari 56.
Bilah yang terisi kosong adalah Image UI dengan Image Type yang diatur ke Filled. Pengaturan itu muncul setelah Image memiliki Source Image; jika nilainya None, Inspector menyembunyikannya. Fill Method Horizontal dengan Fill Origin Left membuat bilah menyusut ke arah ujung kirinya, dan fillAmount, dari 0 hingga 1, menentukan seberapa banyak bilah yang ditampilkan. Image berwarna gelap di belakangnya menunjukkan bagian yang kosong. Unity membatasi nilai fillAmount, jadi nilai 1.4 menampilkan bilah penuh dan -0.2 menampilkan bilah kosong.
fillAmount adalah bagian kesehatan yang tersisa: kesehatan dibagi nilai maksimumnya. Dengan field int, pembagian itu menghasilkan bilangan bulat, dan 350 / 500 bernilai 0, jadi ubah salah satu sisinya menjadi float terlebih dahulu. Image berada di UnityEngine.UI. Bilah boss ini diperbarui setelah setiap serangan:
public Image bossBar;
public int bossMaxHp = 500;
private int bossHp = 500;
public void Hit(int damage)
{
bossHp = Mathf.Max(bossHp - damage, 0);
bossBar.fillAmount = (float)bossHp / bossMaxHp; // 350 / 500 = 0.7
}Warna bilah juga bisa mengikuti kesehatannya: bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount); akan berwarna hijau saat bilah penuh dan berubah menjadi merah saat bilah kosong.
Tantangan
MudahKesatria itu memiliki perisai yang menyerap damage sebelum health-nya berkurang. Tombol panah menggerakkannya (Mover.cs), dan paku melukainya sebesar 30 saat dia menginjaknya (Spikes.cs). Tulis Knight.cs; scene menghubungkan healthBar dan shieldBar, yang kosong di scene:
hpdimulai padamaxHp(80) danshieldpadamaxShield(40), dan kedua bar dimulai dalam keadaan penuh.TakeDamage(int amount): perisai menahan damage sebanyak sisa kapasitasnya, dan sisanya mengurangihp, yang tidak pernah kurang dari 0.- Setelah setiap serangan, kedua bar menunjukkan sisa nilainya:
shieldBarmenunjukkan shield dibandingkan denganmaxShield, danhealthBarmenunjukkan hp dibandingkan denganmaxHp.
Tekan Mainkan, injak paku beberapa kali, lalu tekan Periksa.
Coba sendiri
using UnityEngine;
using UnityEngine.UI;
public class Knight : MonoBehaviour
{
public Image healthBar;
public Image shieldBar;
public int maxHp = 80;
public int maxShield = 40;
private int hp;
private int shield;
void Start()
{
hp = maxHp;
shield = maxShield;
// Isi kedua bilah
}
public void TakeDamage(int amount)
{
// Perisai menyerap kerusakan semampunya; sisanya mengurangi hp hingga batas 0. Lalu tampilkan kedua bilah.
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membangun Game Sungguhan
4Scene dan Level
Muat SceneMulai Ulang LevelLevel BerikutnyaPertahankan Antar-SceneRekap: Pilih Level10Proyek: Platformer 3D
LintasanPlatform Bergerak2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di Bank