プレイヤーのライフバー(hp)を簡単に実装【Unityゲーム制作】

Unityの2Dゲームで「プレイヤーのライフバー(HPバー)」を実装していきます。色々な方法がありますがシンプルな方法でいきます。

はじめに

Unityのバージョンは2021.3.14f1です。

下記のようなシンプルなライフバー(ヘルスバー)を実装していきます。ダメージを食らうと白部分が増えるという感じです。分かりやすいようにサイズを大きくしてありますが、実際はもっと小さいですね。

実装開始

ライフバーの見た目(UI)を作成してから簡単なスクリプトで実装していきます。

ライフバーのUI作成

まずはHierarchyで右クリックして、UI→Imageを追加。

名前をHPBarに変更してRectTransformを大体の位置になるように調整します。

HPBarをコピーして配下に移動。名前をHPBarCurrentにして、Image部のSourceImageをSpriteShapeFill、Colorを赤色にします。

HPBarCurrentのRaycasrPaddingを変更。ImageTypeをFilled、FillMethodはHorizontal、FillOriginをLeftに。

試しにFillAmountを変更して、ライフバーっぽくなればOK。

スクリプトの作成

HPBarと言う名前でスクリプトを作成します、中身は下記。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
using UnityEngine;
using UnityEngine.UI;
public class HPBar : MonoBehaviour
{
[SerializeField] private Image _hpBarcurrent;
[SerializeField] private float _maxHealth;
private float currentHealth;
void Awake()
{
currentHealth = _maxHealth;
}
public void UpdateHP(float damage)
{
currentHealth = Mathf.Clamp(currentHealth - damage, 0, _maxHealth);
_hpBarcurrent.fillAmount = currentHealth / _maxHealth;
}
}
using UnityEngine; using UnityEngine.UI; public class HPBar : MonoBehaviour { [SerializeField] private Image _hpBarcurrent; [SerializeField] private float _maxHealth; private float currentHealth; void Awake() { currentHealth = _maxHealth; } public void UpdateHP(float damage) { currentHealth = Mathf.Clamp(currentHealth - damage, 0, _maxHealth); _hpBarcurrent.fillAmount = currentHealth / _maxHealth; } }
using UnityEngine;
using UnityEngine.UI;

public class HPBar : MonoBehaviour
{
    [SerializeField] private Image _hpBarcurrent;
    [SerializeField] private float _maxHealth;

    private float currentHealth;

    void Awake()
    {
        currentHealth = _maxHealth;
    }
    public void UpdateHP(float damage)
    {
        currentHealth = Mathf.Clamp(currentHealth - damage, 0, _maxHealth);
        _hpBarcurrent.fillAmount = currentHealth / _maxHealth;
    }
}

ダメージ量を渡すと、HPバーがダメージに応じて変化します。

Mathf.Clampは値の範囲制限ですね。

HPBarオブジェクトにスクリプトをアタッチして、変数をセットします。

試しにボタンクリックでダメージを食らうようにしてみます。

実行してボタンを押した時にダメージが食らえばOK。

実際は敵から攻撃された時にダメージを食らう感じかな。

タイトルとURLをコピーしました