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オブジェクトにスクリプトをアタッチして、変数をセット。

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

