<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Filled | 怪獣の2Dアクションゲーム制作開発記</title>
	<atom:link href="https://naiterukaiju.com/tag/filled/feed/" rel="self" type="application/rss+xml" />
	<link>https://naiterukaiju.com</link>
	<description>Unityでゲームを作る方法を初心者目線で発信👾</description>
	<lastBuildDate>Wed, 06 May 2026 07:24:46 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://naiterukaiju.com/wp-content/uploads/2025/09/cropped-Enemy-32x32.png</url>
	<title>Filled | 怪獣の2Dアクションゲーム制作開発記</title>
	<link>https://naiterukaiju.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Unity2D】HPゲージ（体力UI）をImageで簡単に作る｜（コードあり・解説付き）</title>
		<link>https://naiterukaiju.com/unity-2d-hp-bar-image/</link>
					<comments>https://naiterukaiju.com/unity-2d-hp-bar-image/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sun, 05 Apr 2026 05:29:23 +0000</pubDate>
				<category><![CDATA[Unity2D実装解説（テクニック）]]></category>
		<category><![CDATA[2Dゲーム]]></category>
		<category><![CDATA[Filled]]></category>
		<category><![CDATA[HP]]></category>
		<category><![CDATA[HPUI]]></category>
		<category><![CDATA[Image]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[Unity初心者]]></category>
		<category><![CDATA[アクションゲーム]]></category>
		<category><![CDATA[ゲーム制作]]></category>
		<category><![CDATA[バー]]></category>
		<category><![CDATA[体力UI]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=1045</guid>

					<description><![CDATA[Unityでゲーム制作をしていると、「体力UIを表示させるようにしたい」「HPを数値だけで管理すると、プレイヤーにとって分かりづらい…」て思うことってありますよね。 そんなときは、減っていくHPバー（体力ゲージ） を表示 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-10 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/2026/04/9327DB85-EFD6-4A95-A63A-1FA1F0A35E85.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



<p>Unityでゲーム制作をしていると、<br><strong>「体力UIを表示させるようにしたい」</strong><br><strong>「HPを数値だけで管理すると、プレイヤーにとって分かりづらい…」</strong><br>て思うことってありますよね。</p>



<p>そんなときは、<strong><span class="marker-under-red">減っていくHPバー（体力ゲージ）</span></strong> を表示すると一気にゲームらしくなります！</p>



<p>この記事では、<br><span class="marker-under-red"><strong>UnityのImageコンポーネントの「Fill」機能を使ってHPバーを作る簡単な方法</strong> </span>を解説します！</p>



<p>※当記事は、HPゲージUIを作る方法を中心で解説しています。<br>⬇️ダメージ処理を受ける＋HPゲージUI込みで流れで作りたい方はこちらの記事を見るとスムーズです</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a7%e3%80%91%e6%95%b5%e3%81%ab%e8%a7%a6%e3%82%8c%e3%81%9f%e3%82%89%e3%83%80%e3%83%a1%e3%83%bc%e3%82%b8%ef%bc%81%e4%bd%93%e5%8a%9bui%e3%82%92%e4%bd%9c%e3%81%a3/" title="【Unity入門⑧】敵に触れたらダメージ！体力UIを作ってみよう" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/b4c85c1c258ccc168f600ef2dd0dbe0b.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity入門⑧】敵に触れたらダメージ！体力UIを作ってみよう</div><div class="blogcard-snippet external-blogcard-snippet">前回の記事では、敵を作る方法を解説しました👾今回はそこから一歩進んで、プレイヤーが敵に触れたら体力が減る仕組みを作ってみましょう👾さらに、体力UI（HPバー）を画面に表示して、減っていく演出も追加します！⬇️画像のように、左上に赤いHPバー...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a7%e3%80%91%e6%95%b5%e3%81%ab%e8%a7%a6%e3%82%8c%e3%81%9f%e3%82%89%e3%83%80%e3%83%a1%e3%83%bc%e3%82%b8%ef%bc%81%e4%bd%93%e5%8a%9bui%e3%82%92%e4%bd%9c%e3%81%a3/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



<p>⬇️こちらは、ダメージ処理を判定させる方法に特化した記事です</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e6%95%b5%e3%81%ab%e8%a7%a6%e3%82%8c%e3%81%9f%e3%82%89%e3%83%80%e3%83%a1%e3%83%bc%e3%82%b8%e3%82%92%e5%8f%97%e3%81%91%e3%82%8b%e4%bb%95%e7%b5%84%e3%81%bf%e3%81%ae%e4%bd%9c/" title="【Unity2D】敵に触れたらダメージを受ける仕組みの作り方｜（コード全文・解説付き）" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/fbecb8916904332f5709b4ef3ca8c91b.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】敵に触れたらダメージを受ける仕組みの作り方｜（コード全文・解説付き）</div><div class="blogcard-snippet external-blogcard-snippet">Unity2Dでアクションゲームを作っていると、敵に触れたらHPを減らしたいダメージ処理を入れたいと思うことがありますよね。この記事では、敵に触れたらプレイヤーがダメージを受ける仕組みの作り方を、初心者向けにわかりやすく解説します！今回は ...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e6%95%b5%e3%81%ab%e8%a7%a6%e3%82%8c%e3%81%9f%e3%82%89%e3%83%80%e3%83%a1%e3%83%bc%e3%82%b8%e3%82%92%e5%8f%97%e3%81%91%e3%82%8b%e4%bb%95%e7%b5%84%e3%81%bf%e3%81%ae%e4%bd%9c/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">この記事でできること</a></li><li><a href="#toc2" tabindex="0">① HPバーUIを作る</a><ol><li><a href="#toc3" tabindex="0">① Canvasを作成</a></li><li><a href="#toc4" tabindex="0">② HPの枠部分のバーを作る</a></li><li><a href="#toc5" tabindex="0">③ ゲージ部分を作る（赤のバー）</a></li></ol></li><li><a href="#toc6" tabindex="0">② HPを減少させるソースコード</a></li><li><a href="#toc7" tabindex="0">③ コードを1行ずつ解説</a><ol><li><a href="#toc8" tabindex="0">HPを管理する変数</a></li><li><a href="#toc9" tabindex="0">StartでHPを初期化する</a></li><li><a href="#toc10" tabindex="0">HPバー更新処理</a></li></ol></li><li><a href="#toc11" tabindex="0">④ プレイヤー側にバーをセットする</a></li><li><a href="#toc12" tabindex="0">❌よくあるエラー</a><ol><li><a href="#toc13" tabindex="0">HPバーが減らない</a></li><li><a href="#toc14" tabindex="0">NullReferenceExceptionが出る</a></li></ol></li><li><a href="#toc15" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">この記事でできること</span></h2>



<ul class="wp-block-list">
<li>画面にHPバーを表示できる</li>



<li>ダメージを受けるとHPバーが減る</li>



<li><code>Image.fillAmount</code> を使ったUI制御が理解できる</li>
</ul>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2025/10/無題のビデオ-‐-Clipchampで作成-3.mp4"
  autoplay
  loop
  muted
  playsinline
  width="640"
  height="360">
</video



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc2">① HPバーUIを作る</span></h2>



<h3 class="wp-block-heading"><span id="toc3">① Canvasを作成</span></h3>



<p>まずはUIの土台となる<strong>Canvas</strong>を作ります。</p>



<p><strong>Canvas（キャンバス）とは、一言でいうと<br>Unityで「UIを表示するための土台（画面）」です。</strong></p>



<p>テキスト、ボタン、パネルなどの&nbsp;<strong>UI要素は、必ず Canvas の子オブジェクトとして配置されます。</strong></p>



<p><strong><span class="marker-under-blue">Hierarchy → 右クリック → <code>UI &gt; Canvas</code> で作成します。</span></strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="710" height="420" src="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1.png" alt="Canvasの作り方の画像" class="wp-image-1065" srcset="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1.png 710w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1-300x177.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc4">② HPの枠部分のバーを作る</span></h3>



<p>背景バーのベースとなる枠部分を追加します！</p>



<p>①で作った<strong><span class="marker-under-blue">Canvasを選択 → 右クリック → UI → Imageを追加</span></strong>します</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="710" height="420" src="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー.png" alt="Imageの作り方の画像" class="wp-image-1066" srcset="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー.png 710w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-300x177.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<p>追加した<strong>Image</strong>を選択し、以下を変更します。</p>



<ul class="wp-block-list">
<li><strong><span class="marker-under-blue">名前：HPBar_Backに変更</span></strong></li>



<li><span class="marker-under-blue"><strong>色：黒やグレーに変更する</strong></span></li>



<li><span class="marker-under-blue"><strong>サイズ：横長（例：300×30</strong></span><span class="marker-under-blue"><strong>ぐらい</strong></span><span class="marker-under-blue"><strong>）</strong></span></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc5">③ ゲージ部分を作る（赤のバー）</span></h3>



<p>②で作った背景バーに対して、子オブジェクトとしてゲージ部分を作ります！<br>この③で作る部分は<strong>ゲージのHPが減る見た目の赤い部分を指しています。</strong></p>



<p>②で作った<strong><span class="marker-under-blue">HPBar_Backを選択→ 右クリック → UI → Image</span></strong>を追加します</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-10 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/2026/04/9327DB85-EFD6-4A95-A63A-1FA1F0A35E85.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p><strong>親子関係にするのがポイントです💡</strong></p>
</div></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="710" height="420" src="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2.png" alt="Imageの作り方の画像" class="wp-image-1067" srcset="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2.png 710w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2-300x177.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<p><br>追加した<strong>Image</strong>を選択し、以下を変更します。</p>



<ul class="wp-block-list">
<li><strong><span class="marker-under-blue">名前：「HPBar_Fill」に変更する</span></strong></li>



<li><span class="marker-under-blue"><strong>Inspector <code style=""><b>&gt;</b></code></strong><code style=""><b>Image &gt; Source Image</b></code><b>を適当なスプライトに設定</b>する</span>（Squareなど）</li>



<li><strong><span class="marker-under-blue">Color：赤など</span></strong></li>



<li><span class="marker-under-blue"><strong>Image Type：Filled</strong>に変更</span>（画像を少しずつ消したり、伸ばしたりできる機能にする）</li>



<li><span class="marker-under-blue"><strong>Fill Method</strong>：<strong>Horizontal</strong>に変更</span>（横に左→右（または右→左）にゲージが減るようになる）</li>



<li><span class="marker-under-blue"><strong>Fill Origin</strong>：<strong>Left</strong>に変更</span>（左から減る）</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="710" height="420" src="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-3.png" alt="Imageの各種設定の画像" class="wp-image-1068" srcset="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-3.png 710w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-3-300x177.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<p>➡️<strong><span class="marker-under-red">これで「左から減るHPバー」仕組みになります！</span></strong></p>



<ul class="wp-block-list">
<li>背景（Back）：HPの枠</li>



<li>前面（Fill）：実際に減る部分</li>
</ul>



<p>こうして分けることで、見た目調整がしやすくなります！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc6">② HPを減少させるソースコード</span></h2>



<p>今回はHPバーUIの動きを確認しやすいように、Spaceキーを押すとHPが減るサンプルで解説します。ダメージを受ける処理の代わりに、Spaceキーを押すたびにゲージが減少していくことが確認できます。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>using UnityEngine;
using UnityEngine.UI;

public class Player : MonoBehaviour
{
    &#91;SerializeField, Header("最大HP")&#93;
    private int _maxHP = 5;

    &#91;SerializeField, Header("HPバーのImage")&#93;
    private Image _hpBarFill;

    private int _currentHP;

    private void Start()
    {
        _currentHP = _maxHP;
        _UpdateHPBar();
    }

    void Update()
    {
        // Spaceキーを押したらHPを1減らす
        if (UnityEngine.Input.GetKeyDown(KeyCode.Space))
        {
            _currentHP--;
            _currentHP = Mathf.Clamp(_currentHP, 0, _maxHP);
            _UpdateHPBar();
        }
    }
    
    private void _UpdateHPBar()
    {
        if (_hpBarFill == null) return;

        _hpBarFill.fillAmount = (float)_currentHP / _maxHP;
    }
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">using</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">UnityEngine</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">using</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">UnityEngine</span><span style="color: #D4D4D4">.UI;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #9CDCFE">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">Player</span><span style="color: #D4D4D4"> : </span><span style="color: #4EC9B0">MonoBehaviour</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #D4D4D4">    &#91;</span><span style="color: #9CDCFE">SerializeField</span><span style="color: #D4D4D4">, </span><span style="color: #DCDCAA">Header</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;最大HP&quot;</span><span style="color: #D4D4D4">)&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_maxHP</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">5</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    &#91;</span><span style="color: #9CDCFE">SerializeField</span><span style="color: #D4D4D4">, </span><span style="color: #DCDCAA">Header</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;HPバーのImage&quot;</span><span style="color: #D4D4D4">)&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Image</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_hpBarFill</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_currentHP</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Start</span><span style="color: #D4D4D4">()</span></span>
<span class="line"><span style="color: #D4D4D4">    {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_currentHP</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_maxHP</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">_UpdateHPBar</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Update</span><span style="color: #D4D4D4">()</span></span>
<span class="line"><span style="color: #D4D4D4">    {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// Spaceキーを押したらHPを1減らす</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">UnityEngine</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Input</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">GetKeyDown</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">KeyCode</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Space</span><span style="color: #D4D4D4">))</span></span>
<span class="line"><span style="color: #D4D4D4">        {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">_currentHP</span><span style="color: #D4D4D4">--;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">_currentHP</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Mathf</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Clamp</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_currentHP</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">_maxHP</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #DCDCAA">_UpdateHPBar</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">    </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">_UpdateHPBar</span><span style="color: #D4D4D4">()</span></span>
<span class="line"><span style="color: #D4D4D4">    {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">_hpBarFill</span><span style="color: #D4D4D4"> == </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">) </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_hpBarFill</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">fillAmount</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4">)</span><span style="color: #9CDCFE">_currentHP</span><span style="color: #D4D4D4"> / </span><span style="color: #9CDCFE">_maxHP</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc7">③ コードを1行ずつ解説</span></h2>



<h3 class="wp-block-heading"><span id="toc8">HPを管理する変数</span></h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>&#91;SerializeField&#93; private int _maxHP = 5;
private int _currentHP;</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">&#91;</span><span style="color: #9CDCFE">SerializeField</span><span style="color: #D4D4D4">&#93; </span><span style="color: #9CDCFE">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_maxHP</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">5</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #9CDCFE">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_currentHP</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p><strong><code>_maxHP</code>&nbsp;は最大HP</strong>です。<br><code>_</code><strong><code>currentHP</code>&nbsp;は現在のHP</strong>です。</p>



<p><code>SerializeField</code>&nbsp;を付けているので、<strong>Inspector から数値を調整することもできます。</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc9">StartでHPを初期化する</span></h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>private void Start()
{
    _currentHP = _maxHP;
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #9CDCFE">private</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Start</span><span style="color: #D4D4D4">()</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">_currentHP</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_maxHP</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<p>ゲーム開始時に、現在HPを最大HPと同じ値にしています。<br>これを入れておくことで、<strong>最初から満タンの状態でスタート</strong>できます！</p>



<h3 class="wp-block-heading"><span id="toc10">HPバー更新処理</span></h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>    private void _UpdateHPBar()
    {
        if (_hpBarFill == null) return;

        _hpBarFill.fillAmount = (float)_currentHP / _maxHP;
    }</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">private</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">_UpdateHPBar</span><span style="color: #D4D4D4">()</span></span>
<span class="line"><span style="color: #D4D4D4">    {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">_hpBarFill</span><span style="color: #D4D4D4"> == </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">) </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_hpBarFill</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">fillAmount</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4">)</span><span style="color: #9CDCFE">_currentHP</span><span style="color: #D4D4D4"> / </span><span style="color: #9CDCFE">_maxHP</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span></code></pre></div>



<p>ここで<strong>「見た目（UI）」</strong>を更新しています。<br>_hpBarFill.fillAmountは<strong>赤いゲージ部分の長さ</strong>となる部分です。<br>現在HPからMAXHPを割って今の体力の割合を求め、_hpBarFill（赤いゲージ部分のImage）にセットしています。<br>こうすることで、<strong><span class="marker-under-red">バーの長さを少しずつ削って体力が変動するように見せています！</span></strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc11">④ プレイヤー側にバーをセットする</span></h2>



<p><strong><span class="marker-under-blue">Playerオブジェクトを選択し、Inspectorの「HP Bar Fill」に</span><span class="marker-under-blue">対して</span><span class="marker-under-blue">、</span><span class="marker-under-blue">作ったHPBar_Fillをドラッグ＆ドロップします！</span></strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="710" height="327" src="https://naiterukaiju.com/wp-content/uploads/2025/10/Unityで2Dアクションゲームを作ろう！のコピーのコピー-4.png" alt="_hpBarFillにドラッグする画像" class="wp-image-1035" srcset="https://naiterukaiju.com/wp-content/uploads/2025/10/Unityで2Dアクションゲームを作ろう！のコピーのコピー-4.png 710w, https://naiterukaiju.com/wp-content/uploads/2025/10/Unityで2Dアクションゲームを作ろう！のコピーのコピー-4-300x138.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<p>これを忘れると動かないので注意です！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc12">❌よくあるエラー</span></h2>



<h3 class="wp-block-heading"><span id="toc13">HPバーが減らない</span></h3>



<p>原因：</p>



<ul class="wp-block-list">
<li>Image Typeが「Simple」になっている<br><span class="marker-under-blue"><strong><span class="marker-under-red">➡️ 必ず「Filled」にする</span></strong></span></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc14">NullReferenceExceptionが出る</span></h3>



<p>原因：</p>



<ul class="wp-block-list">
<li>_hpBarFillの設定忘れの可能性大<br><strong><span class="marker-under-blue"><span class="marker-under-red">➡️ ④の手順通り、Inspectorの「HP Bar Fill」に対して、作ったHPBar_Fillをドラッグ＆ドロップ</span></span></strong><span class="marker-under-red"><strong>する</strong></span></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc15">まとめ</span></h2>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-10 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/2026/04/9327DB85-EFD6-4A95-A63A-1FA1F0A35E85.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>最後まで読んでいただきありがとうございました！</p>
</div></div>



<p>今回は、ImageのFill機能を使ったHPバー（体力UI）の作り方を解説しました！</p>



<p>動作確認はSpaceキーで行いましたが、実際のゲームでは敵に触れたときにHPを減らす形にしています。<br><strong>敵に触れたらダメージを受ける処理の仕組み</strong>は、こちらの記事で詳しく解説しているので、<br>合わせて実装すると「敵に触れる」→「ダメージを受ける」→「HPを減らす」という風になり、一気にゲームらしくなります👾</p>



<div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e6%95%b5%e3%81%ab%e8%a7%a6%e3%82%8c%e3%81%9f%e3%82%89%e3%83%80%e3%83%a1%e3%83%bc%e3%82%b8%e3%82%92%e5%8f%97%e3%81%91%e3%82%8b%e4%bb%95%e7%b5%84%e3%81%bf%e3%81%ae%e4%bd%9c/" title="【Unity2D】敵に触れたらダメージを受ける仕組みの作り方｜（コード全文・解説付き）" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/fbecb8916904332f5709b4ef3ca8c91b.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】敵に触れたらダメージを受ける仕組みの作り方｜（コード全文・解説付き）</div><div class="blogcard-snippet external-blogcard-snippet">Unity2Dでアクションゲームを作っていると、敵に触れたらHPを減らしたいダメージ処理を入れたいと思うことがありますよね。この記事では、敵に触れたらプレイヤーがダメージを受ける仕組みの作り方を、初心者向けにわかりやすく解説します！今回は ...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e6%95%b5%e3%81%ab%e8%a7%a6%e3%82%8c%e3%81%9f%e3%82%89%e3%83%80%e3%83%a1%e3%83%bc%e3%82%b8%e3%82%92%e5%8f%97%e3%81%91%e3%82%8b%e4%bb%95%e7%b5%84%e3%81%bf%e3%81%ae%e4%bd%9c/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>
</div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/unity-2d-hp-bar-image/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2025/10/無題のビデオ-‐-Clipchampで作成-3.mp4" length="221111" type="video/mp4" />

			</item>
	</channel>
</rss>
