<?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>UI | 怪獣の2Dアクションゲーム制作開発記</title>
	<atom:link href="https://naiterukaiju.com/tag/ui/feed/" rel="self" type="application/rss+xml" />
	<link>https://naiterukaiju.com</link>
	<description>Unityでゲームを作る方法を初心者目線で発信👾</description>
	<lastBuildDate>Tue, 14 Apr 2026 13:39:37 +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>UI | 怪獣の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/%e3%80%90unity2d%e3%80%91hp%e3%83%90%e3%83%bc%ef%bc%88%e4%bd%93%e5%8a%9bui%ef%bc%89%e3%82%92image%e3%81%a7%e4%bd%9c%e3%82%8b%e6%96%b9%e6%b3%95/</link>
					<comments>https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91hp%e3%83%90%e3%83%bc%ef%bc%88%e4%bd%93%e5%8a%9bui%ef%bc%89%e3%82%92image%e3%81%a7%e4%bd%9c%e3%82%8b%e6%96%b9%e6%b3%95/#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 internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門⑧】敵に触れたらダメージ！体力UIを作ってみよう</div><div class="blogcard-snippet internal-blogcard-snippet">前回の記事では、敵を作る方法を解説しました👾今回はそこから一歩進んで、プレイヤーが敵に触れたら体力が減る仕組みを作ってみましょう👾さらに、体力UI（HPバー）を画面に表示して、減っていく演出も追加します！⬇️画像のように、左上に赤いHPバー...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.10.12</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 internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2026/03/スクリーンショット-2026-03-29-195746-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2026/03/スクリーンショット-2026-03-29-195746-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2026/03/スクリーンショット-2026-03-29-195746-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2026/03/スクリーンショット-2026-03-29-195746-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity2D】敵に触れたらダメージを受ける仕組みの作り方｜（コード全文・解説付き）</div><div class="blogcard-snippet internal-blogcard-snippet">Unity2Dでアクションゲームを作っていると、敵に触れたらHPを減らしたいダメージ処理を入れたいと思うことがありますよね。この記事では、敵に触れたらプレイヤーがダメージを受ける仕組みの作り方を、初心者向けにわかりやすく解説します！今回は ...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.03.29</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 internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2026/03/スクリーンショット-2026-03-29-195746-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2026/03/スクリーンショット-2026-03-29-195746-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2026/03/スクリーンショット-2026-03-29-195746-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2026/03/スクリーンショット-2026-03-29-195746-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity2D】敵に触れたらダメージを受ける仕組みの作り方｜（コード全文・解説付き）</div><div class="blogcard-snippet internal-blogcard-snippet">Unity2Dでアクションゲームを作っていると、敵に触れたらHPを減らしたいダメージ処理を入れたいと思うことがありますよね。この記事では、敵に触れたらプレイヤーがダメージを受ける仕組みの作り方を、初心者向けにわかりやすく解説します！今回は ...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.03.29</div></div></div></div></a>
</div>
</div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91hp%e3%83%90%e3%83%bc%ef%bc%88%e4%bd%93%e5%8a%9bui%ef%bc%89%e3%82%92image%e3%81%a7%e4%bd%9c%e3%82%8b%e6%96%b9%e6%b3%95/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>
		<item>
		<title>【Unity入門⑭】ゴールに触れたらゲームクリア！ゴールUIを表示しよう</title>
		<link>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ad%e3%80%91%e3%82%b4%e3%83%bc%e3%83%ab%e3%81%ab%e8%a7%a6%e3%82%8c%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%af%e3%83%aa%e3%82%a2%ef%bc%81%e3%82%b4/</link>
					<comments>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ad%e3%80%91%e3%82%b4%e3%83%bc%e3%83%ab%e3%81%ab%e8%a7%a6%e3%82%8c%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%af%e3%83%aa%e3%82%a2%ef%bc%81%e3%82%b4/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sun, 18 Jan 2026 11:14:56 +0000</pubDate>
				<category><![CDATA[Unity2D入門（シリーズ）]]></category>
		<category><![CDATA[2Dゲーム]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[Unity初心者]]></category>
		<category><![CDATA[アクションゲーム]]></category>
		<category><![CDATA[クリア]]></category>
		<category><![CDATA[ゲームクリア]]></category>
		<category><![CDATA[ゲーム制作]]></category>
		<category><![CDATA[ゴール]]></category>
		<category><![CDATA[リスタート]]></category>
		<category><![CDATA[判定]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=633</guid>

					<description><![CDATA[前回の記事では、落下したらゲームオーバーにさせる実装方法の解説をしました。 今回は、プレイヤーがゴールオブジェクトに触れたら「ゲームクリアUI」を表示する方法を解説します。 ゲームでは、「敵に当たったらゲームオーバー」、 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<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>前回の記事では、落下したらゲームオーバーにさせる実装方法の解説をしました。</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ac%e3%80%91%e8%90%bd%e4%b8%8b%e3%81%97%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%ef%bc%81%e3%82%b2%e3%83%bc%e3%83%a0/" title="【Unity入門⑬】落下したらゲームオーバー！ゲームオーバーUIを表示させよう" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門⑬】落下したらゲームオーバー！ゲームオーバーUIを表示させよう</div><div class="blogcard-snippet internal-blogcard-snippet">前回の記事では、ゲーム開始時にBGMをつける方法の解説しました！今回は「プレイヤーがマップから落下したら、ゲームオーバーUIを表示する」実装方法を解説します。落下判定は2Dアクションでよく使う定番ギミックです。ミスしたかが分かりやすくなるの...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.01.10</div></div></div></div></a>
</div>



<p>今回は、<br><strong>プレイヤーがゴールオブジェクトに触れたら<span class="marker-under-red">「ゲームクリアUI」を表示する方法</span></strong><br>を解説します。</p>



<p>ゲームでは、<br>「敵に当たったらゲームオーバー」、「ゴールにたどり着いたらゲームクリア」という流れが基本になりますよね。</p>



<p>この記事では、</p>



<ul class="wp-block-list">
<li><strong><span class="marker-under-red">ゲームクリアUIの作成</span></strong></li>



<li><strong><span class="marker-under-red">Playerがゴールに触れたかどうか判定させる処理をつくる</span></strong></li>



<li><strong><span class="marker-under-red">MainManagerでUIを表示させる処理をつくる</span></strong></li>



<li><strong><span class="marker-under-red">SPACEキーを押すとシーンを最初からやり直す</span></strong></li>
</ul>



<p>という流れで<strong>作成～表示</strong>させるところまで解説を進めていきます！</p>



<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-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">この記事でやること</a></li><li><a href="#toc2" tabindex="0">① ゲームクリアUIを作成しよう</a><ol><li><a href="#toc3" tabindex="0">Canvas を作成する</a></li><li><a href="#toc4" tabindex="0">GameClearPanel を作る</a></li><li><a href="#toc5" tabindex="0">テキストを配置する</a></li><li><a href="#toc6" tabindex="0">最初は非表示にする</a></li></ol></li><li><a href="#toc7" tabindex="0">②MainManager に 処理を追加する</a><ol><li><a href="#toc8" tabindex="0">各処理の解説</a></li></ol></li><li><a href="#toc9" tabindex="0">③ゴールオブジェクトを作る</a><ol><li><a href="#toc10" tabindex="0">ゴール用オブジェクトを作成</a></li><li><a href="#toc11" tabindex="0">「Goal」タグを追加して設定する</a></li></ol></li><li><a href="#toc12" tabindex="0">④Player.csにゴールの当たり判定処理を作る</a><ol><li><a href="#toc13" tabindex="0">各処理の解説</a></li></ol></li><li><a href="#toc14" tabindex="0">動作確認</a></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><strong>ゲームをクリアしたときのUIを作成する</strong></li>



<li><strong>ゴールオブジェクトを作成する</strong></li>



<li><strong>Playerがゴールに触れたらゲームクリアUIを表示させる</strong></li>



<li><strong>SPACEキーを押すと最初からスタート</strong></li>
</ul>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2026/01/サンプルゲーム-SampleScene-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-01-18-20-03-18.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">① ゲームクリアUIを作成しよう</span></h2>



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



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



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



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



<ol class="wp-block-list">
<li>Hierarchy を右クリック</li>



<li><strong>UI → Canvas</strong>を追加</li>
</ol>



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



<h3 class="wp-block-heading"><span id="toc4">GameClearPanel を作る</span></h3>



<p>クリア時に画面に表示させるベースとなるパネルを作ります。</p>



<ol class="wp-block-list">
<li>Canvas の子に <strong>UI → Panel</strong> を作成する</li>



<li>名前を <code>GameClearPanel</code> に変更</li>



<li>背景色を半透明の黒にするのがおすすめです（Colorで調整）</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="381" src="https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-19.png" alt="GameClearPanel の設定画面" class="wp-image-642" srcset="https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-19.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-19-300x114.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-19-768x293.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



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



<h3 class="wp-block-heading"><span id="toc5">テキストを配置する</span></h3>



<p>クリア時に画面に表示させる文字を作ります。</p>



<ol class="wp-block-list">
<li>GameClearPanel の子に <strong>UI → Text (TextMeshPro)</strong>を追加</li>



<li>テキストを <code>GAME CLEAR!!</code> などに変更</li>



<li>中央寄せ・大きめフォントに調整する</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="378" src="https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-20-1.png" alt="ゲームクリア時のテキスト設定" class="wp-image-644" srcset="https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-20-1.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-20-1-300x113.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-20-1-768x290.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p>必要であれば</p>



<ul class="wp-block-list">
<li>「次へ」ボタン</li>



<li>「タイトルへ戻る」ボタン</li>
</ul>



<p>を追加してもOKです。</p>



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



<h3 class="wp-block-heading"><span id="toc6">最初は非表示にする</span></h3>



<ul class="wp-block-list">
<li><code>GameClearPanel</code> の<br><strong><span class="marker-under-red">チェックを外して非アクティブ</span></strong>にしてください。（ゲーム開始時に表示されてしまうため）</li>
</ul>



<h2 class="wp-block-heading"><span id="toc7">②MainManager に 処理を追加する</span></h2>



<p>次に、 <code>MainManager</code>に以下の処理を作成します。（コピペOK！）</p>



<ul class="wp-block-list">
<li><strong>ゲームクリア時のUIを表示させる処理</strong></li>



<li><strong>SPACEキーを押すとシーンを最初からやり直す処理</strong></li>
</ul>



<p>MainManager は主に以下のような役割をします。</p>



<ul class="wp-block-list">
<li><strong>ゲーム全体の状態管理する</strong></li>



<li><strong>UI の表示・非表示を制御など</strong></li>
</ul>



<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;

public class MainManager : MonoBehaviour
{
    &#91;Header("UI参照")&#93;
    &#91;SerializeField&#93; private GameObject _gameClearPanel;
    
    private bool _isGameClear = false;

    private void Awake()
    {
        // 念のため起動時は非表示
        _gameClearPanel.SetActive(false);
    }
    
    void Update()
    {
        // ゲームクリア後、SPACEキーが押されたらリスタート
        if (_isGameClear &amp;&amp; Input.GetKeyDown(KeyCode.Space))
        {
            RestartScene();
        }
    }

    // ゲームクリアUIを表示する
    public void ShowGameClearUI()
    {
        _gameClearPanel.SetActive(true);
        _isGameClear = true;
    }
    
    // シーンを最初から読み直す
    private void RestartScene()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
    }
}
</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>
<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">MainManager</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: #DCDCAA">Header</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;UI参照&quot;</span><span style="color: #D4D4D4">)&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">    &#91;</span><span style="color: #9CDCFE">SerializeField</span><span style="color: #D4D4D4">&#93; </span><span style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">GameObject</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_gameClearPanel</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: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">bool</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_isGameClear</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</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">Awake</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">// 念のため起動時は非表示</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_gameClearPanel</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetActive</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">false</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 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キーが押されたらリスタート</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">_isGameClear</span><span style="color: #D4D4D4"> &amp;&amp; </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: #DCDCAA">RestartScene</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>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// ゲームクリアUIを表示する</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">ShowGameClearUI</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">_gameClearPanel</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetActive</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">true</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_isGameClear</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">true</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 style="color: #6A9955">// シーンを最初から読み直す</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">RestartScene</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">SceneManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">LoadScene</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">SceneManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">GetActiveScene</span><span style="color: #D4D4D4">().</span><span style="color: #9CDCFE">name</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></code></pre></div>



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



<h3 class="wp-block-heading"><span id="toc8">各処理の解説</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 GameObject _gameClearPanel;
</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">GameObject</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_gameClearPanel</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>SerializeFieldを定義してUnity上のInspector から設定できるようにしています</li>
</ul>



<p>上記を定義したら、以下のようにUnity上から①で作成した<strong>GameClearPanel</strong>を<strong><span class="marker-under-red">ドラッグ＆ドロップ</span></strong>してください！</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="529" src="https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-25.png" alt="GameClearPanelをドラッグ" class="wp-image-766" srcset="https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-25.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-25-300x159.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-25-768x406.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



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



<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 bool _isGameClear = false;</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: #9CDCFE">bool</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_isGameClear</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p><strong>ゲームクリア状態かどうか</strong>判断するようのフラグです。<br>後の処理で、ゲームクリアしている状態（true）だったら<strong>SPACEキーを受け付ける</strong>ようにしています。</p>



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



<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 Awake()
{
    _gameClearPanel.SetActive(false);
}
</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">Awake</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">_gameClearPanel</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetActive</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p>Awake は「シーンが始まった瞬間」に必ず1回だけ呼ばれます💡</p>



<ul class="wp-block-list">
<li>シーン起動時に <strong>必ず非表示に</strong>する</li>



<li>こうするとInspector 設定ミスを防げる</li>
</ul>



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



<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 Update()
{
    if (_isGameClear &amp;&amp; Input.GetKeyDown(KeyCode.Space))
    {
        RestartScene();
    }
}
</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">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: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">_isGameClear</span><span style="color: #D4D4D4"> &amp;&amp; </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: #DCDCAA">RestartScene</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></code></pre></div>



<p>Updateは<strong>毎フレーム</strong>呼ばれます。</p>



<ul class="wp-block-list">
<li>キー入力は <strong>毎フレーム監視</strong>する必要がある</li>



<li>ゲームクリア後だけ受付するように条件を付けています</li>
</ul>



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



<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 RestartScene()
{
    SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
</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">RestartScene</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">SceneManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">LoadScene</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">SceneManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">GetActiveScene</span><span style="color: #D4D4D4">().</span><span style="color: #9CDCFE">name</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>今開いているシーン名を取得</li>



<li>そのシーンを再ロード</li>
</ul>



<p>➡️ <strong>「最初からスタート」＝シーンを再読み込み</strong>ということをしています。</p>



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



<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>public void ShowGameClearUI()
{
    _gameClearPanel.SetActive(true);
    _isGameClear = true;
}
</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">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">ShowGameClearUI</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">_gameClearPanel</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetActive</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">true</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">_isGameClear</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">true</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>ゲームクリア時に呼ばれる（Player側で判断します）</li>



<li>UI を表示するだけのシンプルな責務</li>



<li><strong>_isGameClear</strong>をtrueに更新し、クリア状態にしている</li>
</ul>



<p>他にもこのあとに</p>



<ul class="wp-block-list">
<li>SE 再生</li>



<li>BGM 停止</li>



<li>フェード演出</li>
</ul>



<p>を追加する場合も、ここに書けばOKです！</p>



<h2 class="wp-block-heading"><span id="toc9">③ゴールオブジェクトを作る</span></h2>



<h3 class="wp-block-heading"><span id="toc10">ゴール用オブジェクトを作成</span></h3>



<ul class="wp-block-list">
<li> Hierarchyで「2Dオブジェクト → Sprite → Square」を作成する（名前はGoalにする）</li>



<li>Add Componentでコンポーネントを追加
<ul class="wp-block-list">
<li><code><strong>BoxCollider2D</strong></code> などの Collider2D<strong> </strong>を追加</li>



<li><strong>Rigidbody2D</strong>（物理挙動を持たせておく）
<ul class="wp-block-list">
<li>Body Typeは<strong>Static</strong>にしておきます（オブジェクトが動かないようにするため）</li>
</ul>
</li>
</ul>
</li>



<li><strong>Sprite Renderer</strong>タブで<strong>「Sprite」</strong>にゴール用の画像をドラッグする</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="468" src="https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-21-1.png" alt="Goalの設定画面" class="wp-image-649" srcset="https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-21-1.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-21-1-300x140.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-21-1-768x359.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<h3 class="wp-block-heading"><span id="toc11">「Goal」タグを追加して設定する</span></h3>



<ol class="wp-block-list">
<li>Inspector の <strong>Tag</strong> からAdd Tagを押す</li>



<li>「＋」ボタンで<code><strong>Goal</strong></code> タグを追加する</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="490" height="273" src="https://naiterukaiju.com/wp-content/uploads/2026/01/image.png" alt="Goal タグの追加" class="wp-image-652" srcset="https://naiterukaiju.com/wp-content/uploads/2026/01/image.png 490w, https://naiterukaiju.com/wp-content/uploads/2026/01/image-300x167.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/01/image-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2026/01/image-160x90.png 160w" sizes="(max-width: 490px) 100vw, 490px" /></figure>



<p><code>Goal</code> タグを追加したらゴールオブジェクトに設定してください。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="569" height="274" src="https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-24.png" alt="Goal タグの設定" class="wp-image-653" srcset="https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-24.png 569w, https://naiterukaiju.com/wp-content/uploads/2026/01/↑作成したUIをドラッグする-24-300x144.png 300w" sizes="(max-width: 569px) 100vw, 569px" /></figure>



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



<h2 class="wp-block-heading"><span id="toc12">④Player.csにゴールの当たり判定処理を作る</span></h2>



<p>次に、<strong>プレイヤーがゴールに触れたことを検知する処理</strong>を<code>OnCollisionEnter2D</code>メソッド内に作成します。</p>



<p><code>OnCollisionEnter2D</code> は<br><strong>Collider2D 同士が接触した瞬間に呼ばれるUnityの共通メソッド</strong>です。</p>



<p>今回のように、「敵に当たった」「ゴールに触れた」といった判定をすることが出来ます。</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>public class Player : MonoBehaviour
{
    
    private void OnCollisionEnter2D(Collision2D collision)
    {
        // 敵に触れたときの処理
        if (collision.gameObject.CompareTag("Enemy"))
        {
            _HitEnemy(collision.gameObject);
        }
        // 追加
        // ゴールに触れたときの処理 
        else if (collision.gameObject.tag == "Goal")
        {
            FindObjectOfType&lt;MainManager>().ShowGameClearUI();

            // プレイヤーを非アクティブにする
            enabled = false;
            GetComponent&lt;PlayerInput>().enabled = false;
        }
    }
}
</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">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">    </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">OnCollisionEnter2D</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">Collision2D</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">collision</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">// 敵に触れたときの処理</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">collision</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">gameObject</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">CompareTag</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Enemy&quot;</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: #DCDCAA">_HitEnemy</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">collision</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">gameObject</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">// 追加</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// ゴールに触れたときの処理 </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">else</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">collision</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">gameObject</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">tag</span><span style="color: #D4D4D4"> == </span><span style="color: #CE9178">&quot;Goal&quot;</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: #DCDCAA">FindObjectOfType</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">MainManager</span><span style="color: #D4D4D4">&gt;().</span><span style="color: #DCDCAA">ShowGameClearUI</span><span style="color: #D4D4D4">();</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #6A9955">// プレイヤーを非アクティブにする</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">enabled</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">PlayerInput</span><span style="color: #D4D4D4">&gt;().</span><span style="color: #9CDCFE">enabled</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</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></code></pre></div>



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



<h3 class="wp-block-heading"><span id="toc13">各処理の解説</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>
        // ゴールに触れたときの処理 
        else if (collision.gameObject.tag == "Goal")
        {
            FindObjectOfType&lt;MainManager>().ShowGameClearUI();

            // プレイヤーを非アクティブにする
            enabled = false;
            GetComponent&lt;PlayerInput>().enabled = false;
        }</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>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// ゴールに触れたときの処理 </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">else</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">collision</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">gameObject</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">tag</span><span style="color: #D4D4D4"> == </span><span style="color: #CE9178">&quot;Goal&quot;</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: #DCDCAA">FindObjectOfType</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">MainManager</span><span style="color: #D4D4D4">&gt;().</span><span style="color: #DCDCAA">ShowGameClearUI</span><span style="color: #D4D4D4">();</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #6A9955">// プレイヤーを非アクティブにする</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">enabled</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">PlayerInput</span><span style="color: #D4D4D4">&gt;().</span><span style="color: #9CDCFE">enabled</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span></code></pre></div>



<ul class="wp-block-list">
<li>tag名が<strong>&#8220;Goal&#8221;</strong>に設定されたオブジェクトに触れたか判定</li>



<li>触れた場合、シーン上に存在する <strong>MainManager を探して取得</strong>する</li>



<li><strong>ShowGameClearUI() </strong>で、ゲームクリア用の UI を<strong>MainManager </strong>から表示する</li>



<li>BGM 停止や効果音再生などもここでまとめて管理ができます</li>
</ul>



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



<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>enabled = false;
GetComponent&lt;PlayerInput>().enabled = false;</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">enabled</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">PlayerInput</span><span style="color: #D4D4D4">&gt;().</span><span style="color: #9CDCFE">enabled</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<ul class="wp-block-list">
<li>Player スクリプト自体を停止（ゴール後に操作できないようにする）</li>



<li>Update や移動処理が動かなくなる</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>ゴール後も動けてしまうと、演出が壊れてしまうため必須の処理です。</p>
</blockquote>



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



<h2 class="wp-block-heading"><span id="toc14">動作確認</span></h2>



<p>ゴールオブジェクトに触れて、UIを表示することができました！</p>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2026/01/サンプルゲーム-SampleScene-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-01-18-20-03-18.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="toc15">まとめ</span></h2>



<ol class="wp-block-list">
<li>ゴールに触れたら <strong>GAME CLEAR!! UI を表示</strong></li>



<li>プレイヤー操作を停止</li>



<li><strong>SPACEキーを押すとシーンを最初からやり直す</strong></li>
</ol>



<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>これで、<strong>「遊ぶ → クリア → もう一回」</strong>という、<br><strong>ゲームとして最低限必要なループ</strong>が完成しました！</p>



<p>この記事が少しでもゲーム制作のお役に立てたら嬉しいです🦖</p>



<p>段々ゲームらしくなってきましたが、背景がまだ何も設定していなくて寂しいので<br>次回は<strong><span class="marker-under-red">背景の表示方法及び、</span><span class="marker-under-red">背景を歩行に合わせてスクロールさせる実装方法</span></strong>の解説を行う予定です！</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ae%e3%80%91%e6%ad%a9%e8%a1%8c%e3%81%ab%e5%90%88%e3%82%8f%e3%81%9b%e3%81%a6%e8%83%8c%e6%99%af%e3%82%92%e3%82%b9%e3%82%af%e3%83%ad%e3%83%bc%e3%83%ab%e3%81%95/" title="【Unity入門⑮】歩行に合わせて背景をスクロールさせよう！" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門⑮】歩行に合わせて背景をスクロールさせよう！</div><div class="blogcard-snippet internal-blogcard-snippet">前回の記事では、ゴールに触れたらゲームクリアUIを表示させる方法を解説しました。今回は歩行に合わせて背景画像をスクロールさせる方法 を解説します！背景があるだけでよりゲームらしさがグッと増して、世界観が一気に広がりますよね！ただ背景を用意す...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.02.17</div></div></div></div></a>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ad%e3%80%91%e3%82%b4%e3%83%bc%e3%83%ab%e3%81%ab%e8%a7%a6%e3%82%8c%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%af%e3%83%aa%e3%82%a2%ef%bc%81%e3%82%b4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2026/01/サンプルゲーム-SampleScene-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-01-18-20-03-18.mp4" length="19472741" type="video/mp4" />

			</item>
		<item>
		<title>【Unity入門⑬】落下したらゲームオーバー！ゲームオーバーUIを表示させよう</title>
		<link>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ac%e3%80%91%e8%90%bd%e4%b8%8b%e3%81%97%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%ef%bc%81%e3%82%b2%e3%83%bc%e3%83%a0/</link>
					<comments>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ac%e3%80%91%e8%90%bd%e4%b8%8b%e3%81%97%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%ef%bc%81%e3%82%b2%e3%83%bc%e3%83%a0/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sat, 10 Jan 2026 05:10:40 +0000</pubDate>
				<category><![CDATA[Unity2D入門（シリーズ）]]></category>
		<category><![CDATA[2Dゲーム]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[Unity初心者]]></category>
		<category><![CDATA[アクションゲーム]]></category>
		<category><![CDATA[ゲームオーバー]]></category>
		<category><![CDATA[ゲーム制作]]></category>
		<category><![CDATA[落下]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=565</guid>

					<description><![CDATA[前回の記事では、ゲーム開始時にBGMをつける方法の解説しました！ 今回は「プレイヤーがマップから落下したら、ゲームオーバーUIを表示する」実装方法を解説します。 落下判定は2Dアクションでよく使う定番ギミックです。ミスし [&#8230;]]]></description>
										<content:encoded><![CDATA[
<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>前回の記事では、ゲーム開始時にBGMをつける方法の解説しました！</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ab%e3%80%912d%e3%82%a2%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%b2%e3%83%bc%e3%83%a0%e3%81%a7%e9%96%8b%e5%a7%8b%e6%99%82%e3%81%abbgm%e3%82%92%e6%b5%81%e3%81%9d/" title="【Unity入門⑫】2Dアクションゲームで開始時にBGMを流そう！" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門⑫】2Dアクションゲームで開始時にBGMを流そう！</div><div class="blogcard-snippet internal-blogcard-snippet">前回の記事では、効果音をつける方法の解説しました！今回はゲームを起動した瞬間に、 BGMを自動再生する方法を解説します。BGMが入るだけで、画面の印象やゲームの世界観が一気に引き締まり、ゲームらしさがグッと増します！BGMはゲーム全体で共通...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.01.01</div></div></div></div></a>
</div>



<p><br>今回は「プレイヤーがマップから落下したら、ゲームオーバーUIを表示する」実装方法を解説します。</p>



<p>落下判定は2Dアクションでよく使う定番ギミックです。<br><strong>ミスしたかが分かりやすくなる</strong>ので、よりゲームのテンポも良くなります！</p>



<p>この記事では、</p>



<ul class="wp-block-list">
<li><span class="marker-under-red"><strong>ゲームオーバーUIはすでに用意してある前提</strong></span></li>



<li><span class="marker-under-red"><strong>「プレイヤーがマップから落下したかどうか判定する」</strong></span></li>
</ul>



<p>という <strong>ロジック部分のみ</strong>を扱います。</p>



<p><strong>ゲームオーバーUIの作成方法自体は、すでに別記事で解説しています。</strong><br>詳しくは、先にこちらをご覧ください⬇️</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a8%e3%80%91hp%e3%81%8c0%e3%81%ab%e3%81%aa%e3%81%a3%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%e3%81%ae%e6%bc%94%e5%87%ba/#toc4" title="【Unity入門⑨】HPが0になったらゲームオーバーの演出をさせよう" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門⑨】HPが0になったらゲームオーバーの演出をさせよう</div><div class="blogcard-snippet internal-blogcard-snippet">前回の記事で、敵に触れたらダメージを食らうHPバーを作りました。今回はプレイヤーのHPが0になったらゲームオーバになるUIを作ってみましょう！この記事では、・プレイヤーのHPが0になったら画面に「GAME OVER」、「リトライ」ボタンを表...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.10.18</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-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">この記事ですること</a></li><li><a href="#toc2" tabindex="0">事前確認</a></li><li><a href="#toc3" tabindex="0">①Player.cs（落下を検知する処理だけ書く）</a></li><li><a href="#toc4" tabindex="0">②各処理の説明</a><ol><li><a href="#toc5" tabindex="0">落下ラインの設定</a></li><li><a href="#toc6" tabindex="0">MainManager を取得</a></li><li><a href="#toc7" tabindex="0">Update() で落下判定</a></li></ol></li><li><a href="#toc8" tabindex="0">なぜ「落下判定」と「ゲームオーバー処理」を分けるのか？</a></li><li><a href="#toc9" tabindex="0">落下ラインの調整方法</a></li><li><a href="#toc10" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p>今回やることはシンプルで、流れはこんな感じです。</p>



<ol class="wp-block-list">
<li>プレイヤーの <strong>Y座標が一定より下</strong>になったら「落下」と判定</li>



<li>MainManager に「ゲームオーバーになった」と伝える</li>



<li>MainManager が ゲームオーバーUIを表示する</li>
</ol>



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



<h2 class="wp-block-heading"><span id="toc2">事前確認</span></h2>



<ul class="wp-block-list">
<li>「【Unity入門⑨】HPが0になったらゲームオーバーの演出をさせよう」の章を実装済である提で解説を進めています</li>



<li>ゲームオーバーUI、MainManager が既に作成済である前提で解説を進めています</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc3">①Player.cs（落下を検知する処理だけ書く）</span></h2>



<p>Player 側では<br><strong>「落ちたかどうか」だけを判断</strong>します。<br>落下判定は、<strong>一番分かりやすい Y座標チェック</strong>を使います。</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;

public class Player : MonoBehaviour
{
    &#91;SerializeField&#93; private float _fallDeadLineY = -10f;

    private MainManager _mainManager;
    private bool _isDead;

    private void Start()
    {
        _mainManager = FindObjectOfType();
    }

    private void Update()
    {
        if (_isDead) return;

        if (transform.position.y &lt; _fallDeadLineY)
        {
            _isDead = true;
            _mainManager.Show();
        }
    }
}
</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>
<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">&#93; </span><span style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_fallDeadLineY</span><span style="color: #D4D4D4"> = -10</span><span style="color: #9CDCFE">f</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">MainManager</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_mainManager</span><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: #9CDCFE">bool</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_isDead</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">_mainManager</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">FindObjectOfType</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">private</span><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: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">_isDead</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: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">transform</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">position</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> &lt; </span><span style="color: #9CDCFE">_fallDeadLineY</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">_isDead</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">true</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">_mainManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Show</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></code></pre></div>



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



<h2 class="wp-block-heading"><span id="toc4">②各処理の説明</span></h2>



<h3 class="wp-block-heading"><span id="toc5">落下ラインの設定</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 float _fallDeadLineY = -10f;
</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">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_fallDeadLineY</span><span style="color: #D4D4D4"> = -10</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>この Y 座標より下に行ったら<strong><span class="marker-under-red">「落下した」</span></strong>と判断するライン</li>
</ul>



<p>Inspectorから調整できるので、ステージが変わっても数値を変えるだけで対応可能！</p>



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



<h3 class="wp-block-heading"><span id="toc6">MainManager を取得</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>_mainManager = FindObjectOfType&lt;MainManager>();
</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">_mainManager</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">FindObjectOfType</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">MainManager</span><span style="color: #D4D4D4">&gt;();</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>シーン内にある MainManager を探して使えるようにしている</li>
</ul>



<p>➡️Player は<strong>「ゲームオーバーにしてほしい」と MainManager にお願いする役</strong>です。</p>



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



<h3 class="wp-block-heading"><span id="toc7">Update() で落下判定</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>if (_isDead) return;
</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: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">_isDead</span><span style="color: #D4D4D4">) </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>すでに落下した後は何もしないようにしています</li>
</ul>



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



<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>if (transform.position.y &lt; _fallDeadLineY)
{
    _isDead = true;
    _mainManager.Show();
}
</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: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">transform</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">position</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> &lt; </span><span style="color: #9CDCFE">_fallDeadLineY</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">_isDead</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">true</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">_mainManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Show</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<ol class="wp-block-list">
<li>プレイヤーの現在位置を取得</li>



<li>Y座標が落下ライン（Inspectorで設定したもの）より下かチェック</li>



<li>下ならゲームオーバー<br>という流れです。</li>
</ol>



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



<h2 class="wp-block-heading"><span id="toc8">なぜ「落下判定」と「ゲームオーバー処理」を分けるのか？</span></h2>



<p>ここが設計上大事なポイントです。</p>



<ul class="wp-block-list">
<li>Player<br> ➡️<strong>「落ちたかどうか」を判断するだけ</strong></li>



<li>MainManager<br> ➡️<strong>「ゲームオーバーにする」責任だけを持つ</strong></li>
</ul>



<p>こうしておくと、</p>



<ul class="wp-block-list">
<li>HPが0になった</li>



<li>トゲに当たった</li>



<li>制限時間切れ</li>
</ul>



<p>なども、すべて</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>_mainManager.Show();
</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">_mainManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Show</span><span style="color: #D4D4D4">();</span></span>
<span class="line"></span></code></pre></div>



<p>で統一することができます🦖</p>



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



<h2 class="wp-block-heading"><span id="toc9">落下ラインの調整方法</span></h2>



<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 float _fallDeadLineY = -10f;
</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">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_fallDeadLineY</span><span style="color: #D4D4D4"> = -10</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>ステージの一番下より少し低めに設定</li>



<li>Inspector から調整できるようにしておく</li>
</ul>



<p>これだけで、<br><strong>ステージごとの微調整がとても楽</strong>になります。</p>



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



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



<ul class="wp-block-list">
<li>今回は <strong>「ゲームオーバーにする条件」だけ</strong>を実装</li>



<li>ゲームオーバー処理は MainManager に集約すると拡張しやすい</li>
</ul>



<p>この記事では、「プレイヤーがマップから落下したかどうか判定する」方法について解説しました。</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>最後まで読んでいただきありがとうございました！</p>
</div></div>



<p>この記事が少しでもゲーム制作に役立てたら嬉しいです🦖</p>



<p>次回は、<strong><span class="marker-under-red">ゴールに触れたらゲームクリアさせ、</span><span class="marker-under-red">クリア</span><span class="marker-under-red">時のUIを作成～表示させる実装方法</span></strong>の解説を行う予定です！</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ad%e3%80%91%e3%82%b4%e3%83%bc%e3%83%ab%e3%81%ab%e8%a7%a6%e3%82%8c%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%af%e3%83%aa%e3%82%a2%ef%bc%81%e3%82%b4/" title="【Unity入門⑭】ゴールに触れたらゲームクリア！ゴールUIを表示しよう" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門⑭】ゴールに触れたらゲームクリア！ゴールUIを表示しよう</div><div class="blogcard-snippet internal-blogcard-snippet">前回の記事では、落下したらゲームオーバーにさせる実装方法の解説をしました。今回は、プレイヤーがゴールオブジェクトに触れたら「ゲームクリアUI」を表示する方法を解説します。ゲームでは、「敵に当たったらゲームオーバー」、「ゴールにたどり着いたら...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.01.18</div></div></div></div></a>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ac%e3%80%91%e8%90%bd%e4%b8%8b%e3%81%97%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%ef%bc%81%e3%82%b2%e3%83%bc%e3%83%a0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Unity入門⑨】HPが0になったらゲームオーバーの演出をさせよう</title>
		<link>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a8%e3%80%91hp%e3%81%8c0%e3%81%ab%e3%81%aa%e3%81%a3%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%e3%81%ae%e6%bc%94%e5%87%ba/</link>
					<comments>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a8%e3%80%91hp%e3%81%8c0%e3%81%ab%e3%81%aa%e3%81%a3%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%e3%81%ae%e6%bc%94%e5%87%ba/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sat, 18 Oct 2025 12:55:49 +0000</pubDate>
				<category><![CDATA[Unity2D入門（シリーズ）]]></category>
		<category><![CDATA[2Dゲーム]]></category>
		<category><![CDATA[GAMEOVER]]></category>
		<category><![CDATA[HPバー]]></category>
		<category><![CDATA[RETRY]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[Unity初心者]]></category>
		<category><![CDATA[アクションゲーム]]></category>
		<category><![CDATA[ゲームオーバー]]></category>
		<category><![CDATA[ゲーム制作]]></category>
		<category><![CDATA[リトライ]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=303</guid>

					<description><![CDATA[前回の記事で、敵に触れたらダメージを食らうHPバーを作りました。 今回はプレイヤーのHPが0になったらゲームオーバになるUIを作ってみましょう！ この記事では、・プレイヤーのHPが0になったら画面に「GAME OVER」 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<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>前回の記事で、敵に触れたらダメージを食らうHPバーを作りました。</p>



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

<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 internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門⑧】敵に触れたらダメージ！体力UIを作ってみよう</div><div class="blogcard-snippet internal-blogcard-snippet">前回の記事では、敵を作る方法を解説しました👾今回はそこから一歩進んで、プレイヤーが敵に触れたら体力が減る仕組みを作ってみましょう👾さらに、体力UI（HPバー）を画面に表示して、減っていく演出も追加します！⬇️画像のように、左上に赤いHPバー...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.10.12</div></div></div></div></a>
</div>



<p><br>今回は<strong>プレイヤーのHPが0になったらゲームオーバになるUI</strong>を作ってみましょう！<br><br>この記事では、<br>・<strong>プレイヤーのHPが0になったら画面に「GAME OVER」、「リトライ」ボタンを表示させる<br>・「リトライ」ボタン押したら初期位置にリスポーンする</strong><br>のような仕組みを解説していきます！</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">完成イメージ</a></li><li><a href="#toc2" tabindex="0">① UI を用意する（Canvas）</a></li><li><a href="#toc3" tabindex="0">② MainManager.csの新規作成</a></li><li><a href="#toc4" tabindex="0">③各処理の説明</a><ol><li><a href="#toc5" tabindex="0">UI参照の変数</a></li><li><a href="#toc6" tabindex="0">ゲームオーバーの多重実行防止</a></li><li><a href="#toc7" tabindex="0">Awake() の役割</a></li><li><a href="#toc8" tabindex="0">Show() メソッド（ゲームオーバーにさせる）</a></li><li><a href="#toc9" tabindex="0">Restart()（リトライボタンを押したとき）</a></li></ol></li><li><a href="#toc10" tabindex="0">④MainManagerのセットアップ</a></li><li><a href="#toc11" tabindex="0">⑤Player からゲームオーバーを呼ぶ処理を書く</a><ol><li><a href="#toc12" tabindex="0"> 全体の流れをまとめると…</a></li></ol></li><li><a href="#toc13" tabindex="0">動作確認</a></li><li><a href="#toc14" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">完成イメージ</span></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="440" src="https://naiterukaiju.com/wp-content/uploads/2025/10/image-3-1024x440.png" alt="GAME OVERのUI" class="wp-image-318" srcset="https://naiterukaiju.com/wp-content/uploads/2025/10/image-3-1024x440.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/10/image-3-300x129.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/10/image-3-768x330.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/10/image-3.png 1514w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ul class="wp-block-list">
<li>画面中央に「GAME OVER」＋「リトライ」ボタンを表示</li>



<li>リトライボタンを押すとシーンを再読み込みして最初からスタートできる</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc2">① UI を用意する（Canvas）</span></h2>



<p>ゲームオーバーになった場合に表示させるUI（テキスト、ボタン）を作っていきましょう！</p>



<ol class="wp-block-list">
<li><strong>Canvas を作成</strong>
<ul class="wp-block-list">
<li>Hierarchy → 右クリック → <strong>UI &gt; Canvas</strong></li>



<li>Render Mode：<strong>Screen Space &#8211; Overlay</strong>（そのままでOK）</li>



<li>※自動で <strong>EventSystem</strong> も作られます（なければ <code>UI &gt; Event System</code> を追加）</li>
</ul>
</li>



<li><strong>全画面の暗幕を作る</strong>
<ul class="wp-block-list">
<li>Canvas を右クリック → <strong>UI &gt; Panel</strong>（名前：<code>GameOverPanel</code>にする）</li>



<li><code>Image</code> の色を <strong>黒 (0,0,0)</strong>、<strong>Alpha=160/255</strong> くらい（薄暗く）</li>



<li><strong>Inactive（非アクティブ）</strong> にしておく（起動直後に見えないように）</li>
</ul>
</li>



<li><strong>ゲームオーバー時のテキスト &amp; リトライボタン</strong>
<ul class="wp-block-list">
<li><code>GameOverPanel</code> の子に <strong>UI &gt; Text (TMP)</strong> か <strong>UI &gt; Text</strong>（名前：<code>Title</code>）
<ul class="wp-block-list">
<li>文字：<strong>GAME OVER</strong></li>
</ul>
</li>



<li><code>GameOverPanel</code> の子に <strong>UI &gt; Button</strong>（名前：<code>RetryButton</code>、ラベル：<strong>RETRY</strong>）<br>👉「RETRY」ボタンを押したときに <strong>シーンを再読み込み（ゲーム再スタート）</strong> するため用のボタンです</li>
</ul>
</li>
</ol>



<p>＜3.<strong>ゲームオーバー時のテキスト</strong>＞<br>テキストのサイズ、位置などを調整します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="747" src="https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-15-214606-2-1024x747.png" alt="ゲームオーバー時のテキスト設定" class="wp-image-307" srcset="https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-15-214606-2-1024x747.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-15-214606-2-300x219.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-15-214606-2-768x560.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-15-214606-2.png 1223w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>＜3.<strong>リトライボタン</strong>＞<br>ボタンの位置はPos X、Pos Yで調整します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="758" src="https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-15-215008-1-1024x758.png" alt="リトライボタンの設定" class="wp-image-309" srcset="https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-15-215008-1-1024x758.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-15-215008-1-300x222.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-15-215008-1-768x568.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-15-215008-1.png 1223w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



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



<h2 class="wp-block-heading"><span id="toc3">② MainManager.csの新規作成</span></h2>



<p>ゲームオーバー時のUI表示、リトライをまとめて管理するMainManager.csを新規作成します📝（コピペOK）</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.SceneManagement;
using UnityEngine.UI;
using System.Collections;

public class MainManager : MonoBehaviour
{
    &#91;Header("UI 参照")&#93;
    &#91;SerializeField&#93; private GameObject _gameOverPanel;   // ← GameOverPanel を割り当て
    &#91;SerializeField&#93; private Button _retryButton;         // ← RetryButton を割り当て

    private bool _shown = false;

    private void Awake()
    {
        // 起動直後は非表示
        if (_gameOverPanel != null) _gameOverPanel.SetActive(false);

        if (_retryButton != null)
            _retryButton.onClick.AddListener(Restart);
    }

    // 外部（Player）から呼ぶ
    public void Show()
    {
        if (_shown) return;
        _shown = true;

        // パネルを出す
        if (_gameOverPanel != null) _gameOverPanel.SetActive(true);

        // 時間停止（UI演出は unscaledDeltaTime で動かす）
        Time.timeScale = 0f;

    }

    public void Restart()
    {
        // 時間を戻してからリロード
        Time.timeScale = 1f;
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }
}
</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">.SceneManagement;</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 style="color: #569CD6">using</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">System</span><span style="color: #D4D4D4">.Collections;</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">MainManager</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: #DCDCAA">Header</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;UI 参照&quot;</span><span style="color: #D4D4D4">)&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">    &#91;</span><span style="color: #9CDCFE">SerializeField</span><span style="color: #D4D4D4">&#93; </span><span style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">GameObject</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_gameOverPanel</span><span style="color: #D4D4D4">;   </span><span style="color: #6A9955">// ← GameOverPanel を割り当て</span></span>
<span class="line"><span style="color: #D4D4D4">    &#91;</span><span style="color: #9CDCFE">SerializeField</span><span style="color: #D4D4D4">&#93; </span><span style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Button</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_retryButton</span><span style="color: #D4D4D4">;         </span><span style="color: #6A9955">// ← RetryButton を割り当て</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">bool</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_shown</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</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">Awake</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">// 起動直後は非表示</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">_gameOverPanel</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">) </span><span style="color: #9CDCFE">_gameOverPanel</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetActive</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">_retryButton</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">_retryButton</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">onClick</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">AddListener</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">Restart</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: #6A9955">// 外部（Player）から呼ぶ</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Show</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">_shown</span><span style="color: #D4D4D4">) </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_shown</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">true</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// パネルを出す</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">_gameOverPanel</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">) </span><span style="color: #9CDCFE">_gameOverPanel</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetActive</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">true</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// 時間停止（UI演出は unscaledDeltaTime で動かす）</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">Time</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">timeScale</span><span style="color: #D4D4D4"> = 0</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></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">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Restart</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">// 時間を戻してからリロード</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">Time</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">timeScale</span><span style="color: #D4D4D4"> = 1</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">SceneManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">LoadScene</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">SceneManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">GetActiveScene</span><span style="color: #D4D4D4">().</span><span style="color: #9CDCFE">buildIndex</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></code></pre></div>



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



<h2 class="wp-block-heading"><span id="toc4">③各処理の説明</span></h2>



<h3 class="wp-block-heading"><span id="toc5">UI参照の変数</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 GameObject _gameOverPanel;
&#91;SerializeField&#93; private Button _retryButton;
</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">GameObject</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_gameOverPanel</span><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">&#93; </span><span style="color: #9CDCFE">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Button</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_retryButton</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>UnityのInspectorから
<ul class="wp-block-list">
<li>ゲームオーバー用のPanel</li>



<li>Retryボタン<br>を <strong>紐づけるための変数</strong>です。</li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li>Unity上の設定から設定できるようにする</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc6">ゲームオーバーの多重実行防止</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 bool _shown = false;
</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: #9CDCFE">bool</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_shown</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>ゲームオーバー処理が<br><strong>何回も呼ばれてしまうのを防ぐため</strong>のフラグです。</li>
</ul>



<p>落下判定は <code>Update()</code> で毎フレーム実行されるため、<br>何もしないと <strong>何度もゲームオーバー処理が走る</strong>可能性があります。</p>



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



<h3 class="wp-block-heading"><span id="toc7">Awake() の役割</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 Awake()
{
    if (_gameOverPanel != null)
        _gameOverPanel.SetActive(false);

    if (_retryButton != null)
        _retryButton.onClick.AddListener(Restart);
}
</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">Awake</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">_gameOverPanel</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_gameOverPanel</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetActive</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">_retryButton</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_retryButton</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">onClick</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">AddListener</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">Restart</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<h4 class="wp-block-heading">Awake とは？</h4>



<ul class="wp-block-list">
<li><strong>オブジェクトが生成された直後に1回だけ呼ばれる</strong></li>



<li>「初期設定」を書くのに向いている</li>
</ul>



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



<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>_gameOverPanel.SetActive(false);
</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">_gameOverPanel</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetActive</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span></code></pre></div>



<p>GameOverPanel を非表示にする設定をしています。<br><strong>ゲーム開始直後からゲームオーバー画面が表示されないようにするため</strong>です。</p>



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



<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>_retryButton.onClick.AddListener(Restart);
</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">_retryButton</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">onClick</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">AddListener</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">Restart</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span></code></pre></div>



<p>Retryボタンに処理を登録しています。<br><strong>Retryボタンが押されたら<code>Restart()</code> メソッドを実行するという 予約</strong>をしています。</p>



<p>※ ボタンを押すたびに処理を追加しないため、<strong>Awakeで1回だけ登録する</strong>のがポイントです。</p>



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



<h3 class="wp-block-heading"><span id="toc8">Show() メソッド（ゲームオーバーにさせる）</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>public void Show()
</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">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Show</span><span style="color: #D4D4D4">()</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>「ゲームオーバーになった瞬間」に呼ばれる</li>



<li>Player や他のクラスから呼び出す用</li>
</ul>



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



<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>if (_shown) return;
_shown = true;
</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: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">_shown</span><span style="color: #D4D4D4">) </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #9CDCFE">_shown</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">true</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>落下中は毎フレーム条件を満たす</li>



<li>そのたびに呼ばれると不具合の原因になる</li>
</ul>



<p> ➡️<strong>「最初の1回だけ実行する」ための安全装置</strong>です（2重実行を防止）</p>



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



<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>_gameOverPanel.SetActive(true);
</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">_gameOverPanel</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetActive</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">true</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span></code></pre></div>



<p>GameOver UI を表示させるということをしています。</p>



<ul class="wp-block-list">
<li>非表示だったUIを表示する</li>
</ul>



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



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



<h3 class="wp-block-heading"><span id="toc9">Restart()（リトライボタンを押したとき）</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>public void Restart()
{
    Time.timeScale = 1f; // 時間を元に戻す
    SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); // 同じシーンを再読み込み
}</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">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Restart</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">Time</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">timeScale</span><span style="color: #D4D4D4"> = 1</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">; </span><span style="color: #6A9955">// 時間を元に戻す</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">SceneManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">LoadScene</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">SceneManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">GetActiveScene</span><span style="color: #D4D4D4">().</span><span style="color: #9CDCFE">buildIndex</span><span style="color: #D4D4D4">); </span><span style="color: #6A9955">// 同じシーンを再読み込み</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<p>「RETRY」ボタンを押したときに呼ばれます。</p>



<ul class="wp-block-list">
<li><strong><code>Time.timeScale = 1</code></strong><br>→ ゲームを再開できるように時間を元通りにする</li>



<li><strong><code>SceneManager.LoadScene()</code></strong><br>→ 今のシーンをリロードして最初からスタート！</li>
</ul>



<p>これで「やり直し」ができるようになります。</p>



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



<h2 class="wp-block-heading"><span id="toc10">④MainManagerのセットアップ</span></h2>



<p>②で作成したスクリプトを管理する用の<strong>MainManager</strong>オブジェクトを作成します。<br></p>



<ol class="wp-block-list">
<li><strong>MainManagerオブジェクトを作成する</strong>
<ul class="wp-block-list">
<li>Hierarchy → ＋ボタンクリック →「create Empty」で空のオブジェクトを作成する</li>



<li>名前を「MainManager」に変更<br>（<strong>create Empty</strong>はスクリプトだけ入れたい時などに使用されます）</li>
</ul>
</li>



<li><strong>MainManager.csの適用</strong>
<ul class="wp-block-list">
<li>Add Component<strong>&gt; </strong>MainManager.csを選択して適用する</li>
</ul>
</li>



<li><strong>UIのセットアップ</strong>
<ul class="wp-block-list">
<li>「gameOverPanel」 に CanvasのGameOverPanel をドラッグする</li>



<li>「retryButton」 に CanvasのRetryButton をドラッグする</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="523" src="https://naiterukaiju.com/wp-content/uploads/2025/10/↑作成したUIをドラッグする-1024x523.png" alt="GameOverPanel 、RetryButton をドラッグ" class="wp-image-313" srcset="https://naiterukaiju.com/wp-content/uploads/2025/10/↑作成したUIをドラッグする-1024x523.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/10/↑作成したUIをドラッグする-300x153.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/10/↑作成したUIをドラッグする-768x392.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/10/↑作成したUIをドラッグする.png 1218w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



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



<h2 class="wp-block-heading"><span id="toc11">⑤Player からゲームオーバーを呼ぶ処理を書く</span></h2>



<p>Player.csにMainManager.csで追加した処理を呼び出します。<br>HP処理の <code>_TakeDamage()</code> で<span class="marker-under-red"> <strong>0 以下になった瞬間に</strong> <code>Show()</code> </span>を呼びます。</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;--cbp-line-number-width:calc(2 * 0.6 * .875rem);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;
using UnityEngine.InputSystem;

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

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

    private MainManager _mainManager;　// 追加
    private PlayerInput _input;　// 追加

    void Start()
    {
        _currentHP = _maxHP;
        _UpdateHPBar();
        _mainManager = FindObjectOfType&lt;MainManager>(); // 追加
        _input = GetComponent&lt;PlayerInput>(); // 追加
    }

    private void OnCollisionEnter2D(Collision2D col)
    {
        if (col.collider.CompareTag("Enemy"))
        {
            _TakeDamage(1);
        }
    }

    // ダメージ処理
    private void _TakeDamage(int damage)
    {
        _currentHP -= damage;
        _currentHP = Mathf.Clamp(_currentHP, 0, _maxHP);

        _UpdateHPBar();

        if (_currentHP &lt;= 0)　// 追加
        {
            // 操作を止める
            if (_input != null) _input.enabled = false;

            // ゲームオーバーを表示
            if (_mainManager != null) _mainManager.Show();
        }
    }

    // HPバーの見た目を更新
    private void _UpdateHPBar()
    {
        if (_hpBarFill != null)
        {
            _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 style="color: #569CD6">using</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">UnityEngine</span><span style="color: #D4D4D4">.InputSystem;</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">    </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 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">MainManager</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_mainManager</span><span style="color: #D4D4D4">;　</span><span style="color: #6A9955">// 追加</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">PlayerInput</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_input</span><span style="color: #D4D4D4">;　</span><span style="color: #6A9955">// 追加</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">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 style="color: #9CDCFE">_mainManager</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">FindObjectOfType</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">MainManager</span><span style="color: #D4D4D4">&gt;(); </span><span style="color: #6A9955">// 追加</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_input</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">PlayerInput</span><span style="color: #D4D4D4">&gt;(); </span><span style="color: #6A9955">// 追加</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">private</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">OnCollisionEnter2D</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">Collision2D</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">col</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">col</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">collider</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">CompareTag</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Enemy&quot;</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: #DCDCAA">_TakeDamage</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">1</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>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// ダメージ処理</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">_TakeDamage</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">damage</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">damage</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>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">_UpdateHPBar</span><span style="color: #D4D4D4">();</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">_currentHP</span><span style="color: #D4D4D4"> &lt;= </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">)　</span><span style="color: #6A9955">// 追加</span></span>
<span class="line"><span style="color: #D4D4D4">        {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #6A9955">// 操作を止める</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">_input</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">) </span><span style="color: #9CDCFE">_input</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">enabled</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">false</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #6A9955">// ゲームオーバーを表示</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">_mainManager</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">) </span><span style="color: #9CDCFE">_mainManager</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Show</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>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// HPバーの見た目を更新</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>
<span class="line"><span style="color: #D4D4D4">        {</span></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>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



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



<h3 class="wp-block-heading"><span id="toc12"> 全体の流れをまとめると…</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>手順</th><th>処理</th><th>担当関数</th></tr></thead><tbody><tr><td>ゲーム開始</td><td>パネル非表示、ボタン登録</td><td>Awake()</td></tr><tr><td>HP0になる</td><td>パネルを表示、時間停止</td><td>Show()</td></tr><tr><td>RETRY押下</td><td>時間再開、シーン再読み込み</td><td>Restart()</td></tr></tbody></table></figure>



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



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



<h2 class="wp-block-heading"><span id="toc13">動作確認</span></h2>



<ol class="wp-block-list">
<li><strong>GameOverPanel を非アクティブ</strong>にしておく（Startで有効化されないように）</li>



<li>プレイして敵に触れ、HPを0にする</li>



<li>画面が<strong>暗転＋GAME OVER</strong>、操作が止まり、<strong>RETRY</strong>でシーン再読み込み</li>
</ol>



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



<p><br>➡️ HPが0になったらゲームオーバーUIを表示させ、リトライボタンでリスポーンすることが出来ました！！</p>



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



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



<ul class="wp-block-list">
<li><strong>GameOverPanel</strong> を用意して <strong>MainManager</strong> で表示・停止・再開を管理</li>



<li>Player 側は <strong>HPが0の瞬間だけ</strong> <code>Show()</code> を呼ぶ</li>
</ul>



<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>敵からダメージを食らうようにしましたが、このままだと敵を倒す処理が実装されていないので次回では倒せるようにします！</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%aa%e3%80%91%e6%95%b5%e3%82%92%e8%b8%8f%e3%82%93%e3%81%a0%e3%82%89%e5%80%92%e3%81%99%e5%87%a6%e7%90%86%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86%ef%bc%81/" title="【Unity入門⑩】敵を踏んだら倒す処理を作ろう！" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門⑩】敵を踏んだら倒す処理を作ろう！</div><div class="blogcard-snippet internal-blogcard-snippet">前回は「HPが0になったらゲームオーバーの演出させる」処理を実装しました。今回は2Dアクションゲームらしく、上から踏んだら敵を倒す処理を追加します！💥この記事でやることプレイヤーが上から敵を踏むと倒す横や下からぶつかるとダメージを受ける反動...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.11.08</div></div></div></div></a>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a8%e3%80%91hp%e3%81%8c0%e3%81%ab%e3%81%aa%e3%81%a3%e3%81%9f%e3%82%89%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%e3%81%ae%e6%bc%94%e5%87%ba/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2025/10/無題のビデオ-‐-Clipchampで作成-4.mp4" length="460747" type="video/mp4" />

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