初心者必見!現場レベルの「ゲーム制作講座PDF」を無料プレゼント中!▶

UnityでHPゲージを実装 | UIバーと体力管理

Unity ゲーム制作実践

攻撃は当たっているのに、体力がどれだけ残っているか分からない——そんな状態では、戦闘の緊張感が生まれません。

HPゲージは、プレイヤーと敵の両方に使えるUIの基本です。
数値だけでなく画面上のバーで見せることで、ダメージのフィードバックが一気に分かりやすくなります。

この記事では、UnityのUI Sliderを使ったHPゲージ実装を、080の攻撃処理と接続する形で整理します。

  • Sliderは置いたが、ダメージを受けてもゲージが動かない
  • HPが0を下回ってもゲージがマイナス表示になってしまう
  • プレイヤーと敵で別々の仕組みを作り、コードが重複している

✨ この記事でわかること

  • 最大HPと現在HPの変数設計
  • UI SliderでのHPバー表示
  • ダメージ時にゲージを更新する処理
  • プレイヤー・敵両方に使える共通設計
  • 080攻撃との接続例
  • 初心者でも理解できる解説

\プログラミング未経験でも大丈夫!まずは1本作り切ろう/

初心者が最初に選ぶならコレ

Unity ノンフィールドRPG
+スレスパ風JRPG講座

★★★★★ (Unity6対応)

Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。

講座を見てみる \ゼロからでもスマホ対応RPGが作れる!/

憧れのアクションゲームに挑戦

Unity 2Dアクションゲーム
の作り方講座(ロックマン風)

★★★★★ (スマホ化・広告実装)

初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。

講座を見てみる \初心者でも本格ACTが完成する!/

3Dゲーム開発の入口はここ

ゼルダ風3Dアクションゲーム
の作り方講座

★★★★★ (スマホ化対応)

「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。

講座を見てみる \初心者でも全16回で3Dゲームが完成!/

HP管理の基本設計

体力は、次の2つの変数で管理します。

  • maxHP … 最大体力(初期値・ゲージの上限)
  • currentHP … 現在体力(ダメージで減る)

ゲージの表示割合は currentHP / maxHP です。
0〜1の範囲にClampし、マイナス表示や100%超えを防ぎます。

項目 役割 設定の要点
Healthコンポーネント HP数値の保持とダメージ処理 TakeDamage、Heal、死亡判定を1か所にまとめる
HealthBarUI Sliderの見た目を更新 Healthの変更イベントを受け取りSlider.valueを更新
Slider(UI) 画面上のバー表示 Min 0、Max 1。
Fill Areaの色で視認性を確保

Healthコンポーネントの実装

プレイヤーにも敵にも使える汎用スクリプトを作ります。

using System;
using UnityEngine;

public class Health : MonoBehaviour
{
  public int maxHP = 100;
  public int currentHP;
  public event Action<float> OnHealthChanged;

  void Start
  {
    currentHP = maxHP;
    OnHealthChanged?.Invoke((float)currentHP / maxHP);
  }

  public void TakeDamage(int amount)
  {
    currentHP = Mathf.Max(0, currentHP - amount);
    OnHealthChanged?.Invoke((float)currentHP / maxHP);
    if (currentHP <= 0) Die;
  }

  void Die
  {
  }
}

OnHealthChangedイベントでUIと数値を分離すると、080の攻撃からTakeDamageを呼ぶだけでゲージが連動します。

管理人
管理人

イベント(Action)が難しく感じたら、最初はTakeDamageの最後に直接Sliderを更新する書き方でも大丈夫です。
動いたあとでUIを分離していきましょう。

UI SliderでHPバーを表示

Canvas内にSliderを配置し、HealthBarUIスクリプトでHealthと接続します。

using UnityEngine;
using UnityEngine.UI;

public class HealthBarUI : MonoBehaviour
{
  public Health targetHealth;
  public Slider slider;

  void OnEnable
  {
    targetHealth.OnHealthChanged += UpdateBar;
    UpdateBar((float)targetHealth.currentHP / targetHealth.maxHP);
  }

  void OnDisable => targetHealth.OnHealthChanged -= UpdateBar;

  void UpdateBar(float ratio) => slider.value = ratio;
}

敵の頭上にHPバーを出す場合は、World Space Canvasを敵の子に置き、カメラの方を向く(Billboard)処理を足すと見やすくなります。
プレイヤー用はScreen Space Overlayの画面端に固定するのが定番です。

Imageでゲージを作る方法

Sliderの代わりに、UI ImageのfillAmountを使う方法もあります。
Image Typeを「Filled」にし、Fill MethodをHorizontalに設定。
ratioをimage.fillAmountに渡すだけでバーが縮みます。

080攻撃との接続

080で作った攻撃ヒットボックスは、敵のHealth.TakeDamageを呼び出すよう変更します。

void OnTriggerEnter2D(Collider2D other)
{
  var health = other.GetComponent<Health>;
  if (health != null) health.TakeDamage(damage);
}

これで「攻撃が当たる → HPが減る → ゲージが縮む」の流れが完成します。
敵のDie内でDestroy(gameObject)を呼べば、撃破演出も足せます。

HPゲージ実装の手順
  • STEP1
    CanvasとSliderを配置

    Screen Space Overlay、Slider Min 0 Max 1
  • STEP2
    Healthコンポーネント

    プレイヤー・敵にアタッチ。
    maxHPを設定
  • STEP3
    HealthBarUIで接続

    SliderとHealthを紐付け、初期表示を更新
  • STEP4
    080攻撃と接続

    ヒット時にTakeDamageを呼ぶ
  • STEP5
    死亡処理

    HP 0でDestroyまたはリスポーン

プレイヤーと敵でUIを分ける

プレイヤーのHPバーは画面左上など固定位置に、敵のHPバーは頭上のWorld Space Canvasに置くのが一般的です。
同じHealthBarUIスクリプトを使い、targetHealthの参照先だけ変えれば両方に対応できます。

敵が複数いる場合、各敵の子に小さなSliderを持たせるか、ダメージを受けた敵だけ一時的にバーを表示する方式を選びます。
初心者は敵1体から始め、撃破の達成感を先に味わうのがおすすめです。

ダメージ時の演出を足す

ゲージが動くだけでも十分ですが、次の演出を足すと戦闘感が増します。

  • ダメージ時にバーを一瞬赤くする(Image.colorの変更)
  • 数値テキスト(TextMeshPro)で currentHP / maxHP を表示
  • 無敵時間(i-frames)を設け、連続ダメージを防ぐ

無敵時間は、TakeDamageの先頭でフラグを確認し、ダメージ後0.5秒は受け付けない実装が多いです。
横スクロールアクションでは、敵に触れ続けると即死するのを防ぐ効果があります。

つまずきやすいポイント

HPゲージでよくある問題は次のとおりです。

  • ゲージが動かない → HealthBarUIのtargetHealth参照が未設定
  • 敵のバーが画面外 → World Space Canvasの位置・スケールを調整
  • Sliderが逆に減る → Min/Maxが0と1になっているか確認

EventSystemがシーンにないとUIが反応しません。
Canvasを作ると自動追加されますが、手動でUIを並べた場合はHierarchyにEventSystemがあるか確認してください。

TextMeshProを導入しているプロジェクトでは、Legacy Textの代わりにTMP_TextでHP数値を表示すると、拡大しても文字がきれいに見えます。
Package ManagerからTextMeshProをインポートし、初回のフォント設定ウィザードを完了させてから使いましょう。

管理人
管理人

079移動・078ジャンプ・077カメラ・080攻撃・081HP——この5つが揃えば、横スクロールアクションの最小ループが回ります。
あとはステージを広げるだけですよ。

記事を読んで「作ってみたい!」と思ったら!初心者でも1本完成できる講座で実力をつけよう

知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。プログラミング未経験からでも取り組める講座で、ゲーム開発の第一歩を踏み出しましょう。

Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!初心者でもデッキ構築×JRPGをスマホ向けに作れる!】

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座

  • Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
  • Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
  • 初心者でも迷わず進められる丁寧な解説構成
  • ノンフィールドRPGとデッキ構築JRPGの2つをまとめて学べるセット講座

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、プログラミング未経験の初心者でも取り組みやすい、ステップバイステップ形式の講座です。

Unity6対応・スマホ化対応の最新カリキュラムで、読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。

「何から始めればいいかわからない…」という初心者が最初に選ぶ一本として最適な講座です。

Unity6対応・スマホ化対応の最新カリキュラム
ゼロからでもRPGを完成させよう
→ スレスパ風デッキ構築JRPG講座を見てみる
初心者でもスマホ対応のRPGが作れる!まずは1本完成を目指そう!

Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!初心者でもスマホ化・広告実装まで対応した本格横スクロールACTが作れる!】

Unity 2Dアクションゲームの作り方講座(ロックマン風)

  • ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
  • 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
  • スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
  • 敵AI15体・多彩なマップギミック・武器システムを完全実装
  • 完全オリジナルゲームをアセット不使用で素材提供付きで制作

Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。

全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。

「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。

スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!

ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

ゼルダ風3Dアクションゲームの作り方講座

  • ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
  • 「3Dは難しそう」と感じている初心者でも取り組みやすい丁寧な解説構成
  • スマホ化対応で実機で動かせるゲームが完成
  • アセットを使った実践的なゲーム開発手法が身につく
  • 画像・動画・全ソースコード公開の充実したサポート

ゼルダ風3Dアクションゲームの作り方講座は、「3Dゲームは難しそう…」と感じている初心者こそおすすめの入門講座です。

全16回の丁寧な解説で、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを確実に完成まで導きます。スマホ化対応で実機で動かせるため、初めて3Dゲームを作り上げた達成感がひときわ大きい講座です。

「3Dゲームを自分でも作れるか試してみたい」という初心者の最初の一歩として最適です。

初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の壁を一気に突破しよう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
全16回でスマホで動くオリジナル3Dゲームを完成させよう!

まとめ

UnityのHPゲージは、Healthコンポーネントで数値管理 → SliderまたはImageで表示 → 080攻撃のTakeDamageと接続、この流れで実装できます。
プレイヤーと敵で同じHealthクラスを使えば、コードの重複も防げます。

戦闘ループが動いたら、敵の配置やステージギミックを足していきましょう。
移動からUIまで一気通貫で学びたい方は、Unity入門の森の2Dアクション講座も、攻撃・HP・ステージ完成まで追える教材として参考になります。
今日はダメージを受けるとゲージが減るところまで進めてみてください。

コメント

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