Menu
CoddyTech

Bilah Kesehatan

Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 10 dari 60.

Bilah yang kosong adalah Image UI dengan Tipe Gambar yang diatur ke Terisi. Pengaturan itu muncul setelah Image memiliki Gambar Sumber; jika nilainya Tidak Ada, Inspector menyembunyikannya. Metode Isian Horizontal dengan Asal Isian Kiri membuat bilah menyusut ke arah ujung kirinya, dan fillAmount, dari 0 hingga 1, menentukan seberapa banyak bilah yang digambar. Image berwarna gelap di belakangnya menunjukkan bagian yang kosong. Unity membatasi nilai fillAmount, jadi 1.4 menggambar bilah penuh dan -0.2 menggambar bilah kosong.

fillAmount adalah bagian kesehatan yang tersisa: kesehatan dibagi dengan nilai maksimumnya. Dengan field int, pembagian itu menghasilkan bilangan bulat, dan 350 / 500 adalah 0, jadi ubah salah satu sisi menjadi float terlebih dahulu. Image berada di UnityEngine.UI. Bilah bos ini diperbarui setelah setiap pukulan:

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 dapat mengikuti kesehatan: bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount); akan berwarna hijau saat bilah penuh dan berubah menjadi merah saat bilah kosong.

challenge icon

Tantangan

Mudah

Tampilkan perisai dan kesehatan kesatria pada dua bilah.

  1. Tulis ShowBars(): shieldBar.fillAmount = (float)shield / maxShield;, dan lakukan hal yang sama untuk healthBar dengan hp dan maxHp. Panggil fungsi ini di Start().
  2. Di TakeDamage, perisai menahan Mathf.Min(amount, shield) dan sisanya mengurangi hp, yang tidak pernah kurang dari 0. Lalu panggil ShowBars().

Tekan tombol “Main” dan berjalanlah ke atas duri: bilah perisai akan kosong lebih dulu. Lalu tekan tombol “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 menahan kerusakan semampunya. Sisanya mengurangi hp hingga paling rendah 0. Lalu tampilkan kedua bilah.
    }
}

Semua pelajaran di Membangun Game Sungguhan

Latihan sendiri: Playground Unity