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

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

はじめに

「Unity 2020.3.26f1」ヴァージョンで作成しています。

以前作成した「プレイヤーの上にダメージを表示する」をベースに作成していきます。

とはいえ、適当にプレイヤーとフィールドがあればなんでもOK。

実装開始

ライフバーのUIを作成してからスクリプトで実装していきます。

ライフバーのUI追加

まずはCanvas配下に空のオブジェクトを追加。

名前をHPBarとして大体の位置に調整。

ペイントで簡単なバーを作成します。サイズは400x30px、外を適当に黒で囲っただけの簡単なものです。

保存した画像をAssetsフォルダ内に追加。

HPBarの配下に「UI」→「画像」を追加。

HPBarMaxに名前を変更、ソース画像を用意した画像に変更。位置を調整します。

HPBarMaxをコピーして、HPBarCurrentに名前を変更。

色を赤色に変更、レイキャストパティングの画像タイプ、塗りつぶし方法、FillOriginを変更。

試しに塗りつぶし量を変えてみてライフバーっぽくなっていればOK。

スクリプトの作成

HPBarと言う名前でスクリプトを作成。中身は下記に変更。

using System.Collections;
using System.Collections.Generic;
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 damageval)
    {
        currentHealth = Mathf.Clamp(currentHealth - damageval, 0, _maxHealth);
        _hpBarcurrent.fillAmount = currentHealth / _maxHealth;
    }

}

UPdateHPにダメージをパラメータで渡すと、バーがダメージに応じて変化します。Mathf.Clampは値の範囲制限ですね。

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

あとは呼び出すだけ。試しにボタンクリックで動くようにしていますが、実際は他のスクリプトから呼ぶのかな。

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