攻撃は当たっているのに、体力がどれだけ残っているか分からない——そんな状態では、戦闘の緊張感が生まれません。
HPゲージは、プレイヤーと敵の両方に使えるUIの基本です。
数値だけでなく画面上のバーで見せることで、ダメージのフィードバックが一気に分かりやすくなります。
この記事では、UnityのUI Sliderを使ったHPゲージ実装を、080の攻撃処理と接続する形で整理します。
- Sliderは置いたが、ダメージを受けてもゲージが動かない
- HPが0を下回ってもゲージがマイナス表示になってしまう
- プレイヤーと敵で別々の仕組みを作り、コードが重複している
✨ この記事でわかること
- 最大HPと現在HPの変数設計
- UI SliderでのHPバー表示
- ダメージ時にゲージを更新する処理
- プレイヤー・敵両方に使える共通設計
- 080攻撃との接続例
- 初心者でも理解できる解説
\プログラミング未経験でも大丈夫!まずは1本作り切ろう/
初心者が最初に選ぶならコレ
Unity ノンフィールドRPG
+スレスパ風JRPG講座
Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。
憧れのアクションゲームに挑戦
Unity 2Dアクションゲーム
の作り方講座(ロックマン風)
初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。
3Dゲーム開発の入口はここ
ゼルダ風3Dアクションゲーム
の作り方講座
「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。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)を呼べば、撃破演出も足せます。
- STEP1CanvasとSliderを配置
Screen Space Overlay、Slider Min 0 Max 1
- STEP2Healthコンポーネント
プレイヤー・敵にアタッチ。
maxHPを設定
- STEP3HealthBarUIで接続
SliderとHealthを紐付け、初期表示を更新
- STEP4080攻撃と接続
ヒット時に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をスマホ向けに作れる!】

- Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
- Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
- 初心者でも迷わず進められる丁寧な解説構成
- ノンフィールドRPGとデッキ構築JRPGの2つをまとめて学べるセット講座
Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、プログラミング未経験の初心者でも取り組みやすい、ステップバイステップ形式の講座です。
Unity6対応・スマホ化対応の最新カリキュラムで、読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。
「何から始めればいいかわからない…」という初心者が最初に選ぶ一本として最適な講座です。
Unity6対応・スマホ化対応の最新カリキュラム
ゼロからでもRPGを完成させよう
→ スレスパ風デッキ構築JRPG講座を見てみる
初心者でもスマホ対応のRPGが作れる!まずは1本完成を目指そう!
Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!初心者でもスマホ化・広告実装まで対応した本格横スクロールACTが作れる!】

- ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
- 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
- スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
- 敵AI15体・多彩なマップギミック・武器システムを完全実装
- 完全オリジナルゲームをアセット不使用で素材提供付きで制作
Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。
全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。
「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。
スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!
ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも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・ステージ完成まで追える教材として参考になります。
今日はダメージを受けるとゲージが減るところまで進めてみてください。



コメント