<?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>2Dゲーム | 怪獣の2Dアクションゲーム制作開発記</title>
	<atom:link href="https://naiterukaiju.com/tag/2d%E3%82%B2%E3%83%BC%E3%83%A0/feed/" rel="self" type="application/rss+xml" />
	<link>https://naiterukaiju.com</link>
	<description>👾Unityでゲームを作ったり、実装に役立ちそうな情報を記録👾</description>
	<lastBuildDate>Sat, 27 Jun 2026 07:48:47 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://naiterukaiju.com/wp-content/uploads/2026/05/cropped-kaiju-1-32x32.png</url>
	<title>2Dゲーム | 怪獣の2Dアクションゲーム制作開発記</title>
	<link>https://naiterukaiju.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Unity2D】歩行に合わせて背景をスクロールさせてみよう！【初心者向け】</title>
		<link>https://naiterukaiju.com/%e3%80%90unity2d%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%e3%81%9b%e3%82%88%e3%81%86/</link>
					<comments>https://naiterukaiju.com/%e3%80%90unity2d%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%e3%81%9b%e3%82%88%e3%81%86/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sat, 27 Jun 2026 06:07:08 +0000</pubDate>
				<category><![CDATA[Unity2D実装解説]]></category>
		<category><![CDATA[2Dゲーム]]></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=1628</guid>

					<description><![CDATA[今回は歩行に合わせて背景画像をスクロールさせる方法 を解説します！ 背景があるだけでよりゲームらしさがグッと増して、世界観が一気に広がりますよね！ただ背景を用意するだけではプレイヤーが移動した際に背景画像が置いてきぼりに [&#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 class="wp-block-paragraph">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



<p class="wp-block-paragraph"><br>今回は歩行に合わせて<strong><span class="marker-under-red">背景画像をスクロールさせる方法</span></strong> を解説します！<br><br>背景があるだけでよりゲームらしさがグッと増して、世界観が一気に広がりますよね！<br>ただ背景を用意するだけではプレイヤーが移動した際に背景画像が置いてきぼりになってしまうので、<br><strong><span class="marker-under-red">歩行に合わせて背景をスクロール</span></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-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">① 背景オブジェクトを作成する</a><ol><li><a href="#toc3" tabindex="0">背景画像を配置する</a></li><li><a href="#toc4" tabindex="0">Sorting Layer を追加する</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">②背景の子オブジェクトを作成（左側用・右側用）</a><ol><li><a href="#toc8" tabindex="0">Left / Right に背景画像を複製する</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">Start() で初期値を準備</a></li><li><a href="#toc12" tabindex="0">FixedUpdate() で一定間隔で実行</a></li><li><a href="#toc13" tabindex="0"> _Parallax() が本体（視差＋ループ）</a></li><li><a href="#toc14" tabindex="0">画像が途切れない“無限ループ”判定</a></li></ol></li><li><a href="#toc15" tabindex="0">④ Unity上で設定する</a></li><li><a href="#toc16" tabindex="0">動作確認</a></li><li><a href="#toc17" tabindex="0">自作のゲームでも実装しています</a></li><li><a href="#toc18" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">✅ 背景オブジェクトを作る<br>✅ 背景スクロール用スクリプトを作る<br>✅ プレイヤーの動きに合わせて背景を動かす</p>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2026/02/無題のビデオ-‐-Clipchampで作成-13.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">① 背景オブジェクトを作成する</span></h2>



<p class="wp-block-paragraph">まずは背景画像をHierarchy上に配置していきます！</p>



<p class="wp-block-paragraph">⇩背景画像はこちらを使用しています</p>


<a rel="noopener" href="https://assetstore.unity.com/packages/2d/environments/free-2d-cartoon-parallax-background-205812" title="Free 2D Cartoon Parallax Background | 2D Environments | Unity Asset Store" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img fetchpriority="high" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/2cb07b9ade205805b0080e2164502598.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Free 2D Cartoon Parallax Background | 2D Environments | Unity Asset Store</div><div class="blogcard-snippet external-blogcard-snippet">Elevate your workflow with the Free 2D Cartoon Parallax Background asset from CPasteGame. Find this &amp; more Environments &#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://assetstore.unity.com/packages/2d/environments/free-2d-cartoon-parallax-background-205812" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">assetstore.unity.com</div></div></div></div></a>


<h3 class="wp-block-heading"><span id="toc3">背景画像を配置する</span></h3>



<p class="wp-block-paragraph">１．ダウンロードしてきた背景画像をHierarchyにドラッグする</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1000" height="488" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-35-1.png" alt="背景画像をドラッグ" class="wp-image-731" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-35-1.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-35-1-300x146.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-35-1-768x375.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">２．各背景の名前を変更します</p>



<p class="wp-block-paragraph">（ここではSky、Cloud、Mountainにします。）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="369" src="https://naiterukaiju.com/wp-content/uploads/2026/02/image-5-1024x369.png" alt="背景の名前を変更" class="wp-image-733" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/image-5-1024x369.png 1024w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-5-300x108.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-5-768x277.png 768w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-5-1536x554.png 1536w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-5.png 1914w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



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



<h3 class="wp-block-heading"><span id="toc4">Sorting Layer を追加する</span></h3>



<p class="wp-block-paragraph">2Dゲームでは、<br>画像の<strong>表示の前後関係は Sorting Layer で管理します。</strong></p>



<p class="wp-block-paragraph">■ Sorting Layer を作る手順</p>



<ol class="wp-block-list">
<li>背景オブジェクトを選択</li>



<li>Inspector → SpriteRenderer</li>



<li>Sorting Layer → Add Sorting Layer&#8230;</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="470" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-36-1.png" alt="Add Sorting Layerを選択" class="wp-image-735" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-36-1.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-36-1-300x141.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-36-1-768x361.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">すると以下画面が開きます。<br>＋ボタンクリックし、新しいレイヤー名<span class="marker-under-red"><strong>BG</strong>（background）を追加</span><span class="marker-under-red">します。</span><br><span class="marker-under-red">追加したレイヤーを一番上に持ってきて、<strong>Layer0に</strong>なるようにします。</span></p>



<p class="wp-block-paragraph">レイヤーは上にあるほど<strong>「奥」</strong>の扱いになります。<br>今回は背景画像なので、一番奥に設定します！</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="428" height="363" src="https://naiterukaiju.com/wp-content/uploads/2026/02/スクリーンショット-2026-02-15-201212.png" alt="レイヤーの設定" class="wp-image-737" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/スクリーンショット-2026-02-15-201212.png 428w, https://naiterukaiju.com/wp-content/uploads/2026/02/スクリーンショット-2026-02-15-201212-300x254.png 300w" sizes="(max-width: 428px) 100vw, 428px" /></figure>



<p class="wp-block-paragraph">追加したら、<strong><span class="marker-under-red">それぞれの背景オブジェクト全て</span></strong><span class="marker-under-red">に（Sky、Cloud、Mountain、Mountain2）のSorting LayerにBGを設定</span>します。</p>



<p class="wp-block-paragraph"><strong>Sorting Layer ：BG</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="492" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-37-1.png" alt="BGの設定" class="wp-image-741" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-37-1.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-37-1-300x148.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-37-1-768x378.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 class="wp-block-paragraph">このままだと背景の描画順が同じレベルになっており、全て表示が出来ていないので、<br>お絵描きソフトのレイヤー機能のように、画像の描画順番を設定します！<br><br>以下のように設定します。<br>■レイヤー順<br>①山<br>　∟②山２<br>　　∟③雲<br>　　　∟④空<br>①←　レイヤーが手前　レイヤーが奥→④</p>



<ul class="wp-block-list">
<li>Sky
<ul class="wp-block-list">
<li>Order in Layer：-4</li>
</ul>
</li>



<li>Cloud
<ul class="wp-block-list">
<li>Order in Layer：-3</li>
</ul>
</li>



<li>Mountain
<ul class="wp-block-list">
<li>Order in Layer：-2</li>
</ul>
</li>



<li>Mountain2
<ul class="wp-block-list">
<li>Order in Layer：-1</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading"><span id="toc6">背景の位置を調整する</span></h3>



<p class="wp-block-paragraph">Inspector の Transform を以下のように調整します。</p>



<ul class="wp-block-list">
<li>Position：<code>(0, 0, 0)</code>（まずは0でOK）</li>



<li>Scale：必要に応じて調整（背景が画面に合うように）</li>
</ul>



<h2 class="wp-block-heading"><span id="toc7">②背景の子オブジェクトを作成（左側用・右側用）</span></h2>



<p class="wp-block-paragraph">①で背景を作成した状態のままだと、画像の端っこに移動した際に背景が足りなくて見切れてしまうため、更に拡大していきます。<br>ここで、<span class="marker-under-red"><strong>①で作った親の背景オブジェクトに対して、子オブジェクトを作成</strong></span>します。<br>背景オブジェクトの下に <strong>左右の背景</strong> を子として持たせておくことで、後で「無限スクロール」に拡張しやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc8">Left / Right に背景画像を複製する</span></h3>



<p class="wp-block-paragraph">①で作成した背景を親オブジェクトとし、親に対して子オブジェクトを複製します。<br><br>■Skyオブジェクトの作成例</p>



<ol class="wp-block-list">
<li>いまシーン上にあるSkyオブジェクトをコピペして、<br> Skyオブジェクト配下に子として２つ複製する</li>



<li>片方を <code>Left</code>、もう片方を <code>Right</code> と命名</li>



<li><strong>Left</strong>
<ul class="wp-block-list">
<li>Postion：40に変更（※各自の画像サイズに要調整）</li>
</ul>
</li>



<li><code><strong>Right</strong></code>
<ul class="wp-block-list">
<li>Postion：40に変更（※各自の画像サイズに要調整）</li>
</ul>
</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 class="wp-block-paragraph">こうすることで、 左右に背景が拡張されます！ <br>また、親オブジェクトからコピペして貼り付けることで、①で設定した<strong>Sorting Layer </strong>、<strong>Order in Layer</strong>の設定を引き継いだ状態にすることができます✨</p>
</div></div>



<p class="wp-block-paragraph">■<strong>Left</strong>の設定</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="493" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-39-2.png" alt="子オブジェクトの設定（Left）" class="wp-image-745" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-39-2.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-39-2-300x148.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-39-2-768x379.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">■<strong><code><strong>Right</strong></code></strong>の設定</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="486" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-38-2.png" alt="子オブジェクトの設定（right）" class="wp-image-744" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-38-2.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-38-2-300x146.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-38-2-768x373.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">■設定後のScene画面↓</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="208" src="https://naiterukaiju.com/wp-content/uploads/2026/02/image-6-1024x208.png" alt="背景全体" class="wp-image-752" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/image-6-1024x208.png 1024w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-6-300x61.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-6-768x156.png 768w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-6-1536x312.png 1536w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-6.png 1609w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">同じように、Sky、Cloud、Mountain、Mountain2も子として複製します</span></strong>！</p>



<h2 class="wp-block-heading"><span id="toc9">③背景スクロール用スクリプトを作成</span></h2>



<ol class="wp-block-list">
<li>Projectビューで右クリック</li>



<li>Create → C# Script</li>



<li>名前を <code>BackgroundScroller</code>.csにします</li>
</ol>



<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>using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BackgroundScroller : MonoBehaviour
{
    // Range：最小値と最大値を決めれる
    &#91;SerializeField, Header("視差効果"), Range(0, 1)&#93;
    private float _parallaxEffect;

    private GameObject _camera;
    private float _length;
    private float _startPosX;

    // Start is called before the first frame update
    void Start()
    {
        _startPosX = transform.position.x;
        // 画像の横幅のサイズを取得
        _length = GetComponent&lt;SpriteRenderer>().bounds.size.x;
        _camera = Camera.main.gameObject;

    }

    // Unity上のメソッド
    // 設定した一定時間で実行されるメソッド
    private void FixedUpdate()
    {
        _Parallax();
    }

    private void _Parallax()
    {
        // カメラとの距離を代入
        float temp = _camera.transform.position.x * (1 - _parallaxEffect);
        float dist = _camera.transform.position.x * _parallaxEffect;

        transform.position = new Vector3(_startPosX + dist, transform.position.y, transform.position.z);

        // カメラとの距離が画像の横幅分離れたら位置をカメラの座標に移動させることで
        // 画像が途切れずにループしているように見える
        if (temp > _startPosX + _length)
        {
            _startPosX += _length;
        }
        else if (temp &lt; _startPosX - _length)
        {
            _startPosX -= _length;
        }
    }
}
</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">System</span><span style="color: #D4D4D4">.Collections;</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.Generic;</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">;</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">BackgroundScroller</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 style="color: #6A9955">// Range：最小値と最大値を決めれる</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;視差効果&quot;</span><span style="color: #D4D4D4">), </span><span style="color: #DCDCAA">Range</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">1</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">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_parallaxEffect</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">GameObject</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_camera</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">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_length</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">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_startPosX</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Start is called before the first frame update</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">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">_startPosX</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">x</span><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">_length</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">SpriteRenderer</span><span style="color: #D4D4D4">&gt;().</span><span style="color: #9CDCFE">bounds</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">size</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_camera</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Camera</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">main</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">gameObject</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: #6A9955">// Unity上のメソッド</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">FixedUpdate</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">_Parallax</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">_Parallax</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">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">temp</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_camera</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">x</span><span style="color: #D4D4D4"> * (</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> - </span><span style="color: #9CDCFE">_parallaxEffect</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">dist</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_camera</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">x</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">_parallaxEffect</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><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: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector3</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_startPosX</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">dist</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">, </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">z</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: #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">temp</span><span style="color: #D4D4D4"> &gt; </span><span style="color: #9CDCFE">_startPosX</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">_length</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">_startPosX</span><span style="color: #D4D4D4"> += </span><span style="color: #9CDCFE">_length</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">else</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">temp</span><span style="color: #D4D4D4"> &lt; </span><span style="color: #9CDCFE">_startPosX</span><span style="color: #D4D4D4"> - </span><span style="color: #9CDCFE">_length</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">_startPosX</span><span style="color: #D4D4D4"> -= </span><span style="color: #9CDCFE">_length</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="toc10">各処理の説明：なにをしている？</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, Header("視差効果"), Range(0, 1)&#93;
private float _parallaxEffect;
</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">, </span><span style="color: #DCDCAA">Header</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;視差効果&quot;</span><span style="color: #D4D4D4">), </span><span style="color: #DCDCAA">Range</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">)&#93;</span></span>
<span class="line"><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">_parallaxEffect</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li><code>SerializeField</code>：Unity上のInspectorで数値をいじれるようにします</li>



<li><code>Header</code>：Inspector上に見出しを出す</li>



<li><code>Range(0,1)</code>：スライダーで <strong>0〜1</strong> の範囲で調整できるようにする</li>
</ul>



<p class="wp-block-paragraph">✅ これにより「背景がどれくらいカメラについてくるか（視差）」をスライダーで調整できます。</p>



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



<h3 class="wp-block-heading"><span id="toc11">Start() で初期値を準備</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>_startPosX = transform.position.x;
_length = GetComponent&lt;SpriteRenderer>().bounds.size.x;
_camera = Camera.main.gameObject;
</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">_startPosX</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">x</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #9CDCFE">_length</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">SpriteRenderer</span><span style="color: #D4D4D4">&gt;().</span><span style="color: #9CDCFE">bounds</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">size</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #9CDCFE">_camera</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Camera</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">main</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">gameObject</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<h4 class="wp-block-heading"><code>_startPosX</code></h4>



<p class="wp-block-paragraph">背景の「基準となる開始位置X」です。<br>あとでループ処理で、この基準を <strong>横幅分ずらす</strong>のに使います。</p>



<h4 class="wp-block-heading"><code>_length</code></h4>



<p class="wp-block-paragraph"><code>SpriteRenderer.bounds.size.x</code> で <strong>背景画像の“ワールド上の横幅”</strong> を取得します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">重要：ここで取っているのは「ピクセル数」ではなく<br><strong>Unity空間（ワールド座標）の幅</strong>です。<br>（Pixels Per Unit の設定により値は変わります）</p>
</blockquote>



<h4 class="wp-block-heading"><code>_camera</code></h4>



<p class="wp-block-paragraph"><code>Camera.main</code> は「MainCameraタグが付いたカメラ」を取ってきます。<br>背景は <strong>カメラの位置を基準に動く</strong>ので参照が必要です。</p>



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



<h3 class="wp-block-heading"><span id="toc12">FixedUpdate() で一定間隔で実行</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 FixedUpdate()
{
    _Parallax();
}
</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">FixedUpdate</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">_Parallax</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph"><code>FixedUpdate</code> は <strong>一定時間ごと</strong>に呼ばれる更新関数です。<br>（主に物理計算のタイミング）</p>



<p class="wp-block-paragraph">このコードでは背景移動を <code>FixedUpdate</code> に載せています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">背景は物理ではないので、一般的には <code>LateUpdate</code> でもOKです。<br>ただ「カメラがRigidbodyで動く」などの場合は FixedUpdate 運用もアリです。</p>
</blockquote>



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



<h3 class="wp-block-heading"><span id="toc13"> _Parallax() が本体（視差＋ループ）</span></h3>



<h4 class="wp-block-heading">カメラ位置から2つの値を作る</h4>



<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>float temp = _camera.transform.position.x * (1 - _parallaxEffect);
float dist = _camera.transform.position.x * _parallaxEffect;
</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">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">temp</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_camera</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">x</span><span style="color: #D4D4D4"> * (</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> - </span><span style="color: #9CDCFE">_parallaxEffect</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">dist</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_camera</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">x</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">_parallaxEffect</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">ここが最重要です。</p>



<ul class="wp-block-list">
<li><code>dist</code>：<strong>背景を動かす量（視差ぶん）</strong></li>



<li><code>temp</code>：<strong>ループ判定に使う量</strong></li>
</ul>



<p class="wp-block-paragraph"><code>_parallaxEffect</code> が 0.3 なら、</p>



<ul class="wp-block-list">
<li>dist = カメラX * 0.3（背景はカメラの30%だけ動く）</li>



<li>temp = カメラX * 0.7（残り側の値）</li>
</ul>



<p class="wp-block-paragraph">という形になります。</p>



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



<h4 class="wp-block-heading">背景を実際に動かす</h4>



<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>transform.position = new Vector3(_startPosX + dist, transform.position.y, transform.position.z);
</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">transform</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">position</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector3</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_startPosX</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">dist</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">, </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">z</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">背景のX座標を</p>



<ul class="wp-block-list">
<li><strong>開始位置 <code>_startPosX</code></strong></li>



<li><strong>視差分 <code>dist</code></strong></li>
</ul>



<p class="wp-block-paragraph">で決めています。</p>



<p class="wp-block-paragraph">つまり、</p>



<p class="wp-block-paragraph">✅ カメラが右に動く<br>✅ 背景も右に動くけど、<code>_parallaxEffect</code> が小さいほどゆっくり<br>→ 「奥行きがある」ように見える</p>



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



<h3 class="wp-block-heading"><span id="toc14">画像が途切れない“無限ループ”判定</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 (temp > _startPosX + _length)
{
    _startPosX += _length;
}
else if (temp &lt; _startPosX - _length)
{
    _startPosX -= _length;
}
</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">temp</span><span style="color: #D4D4D4"> &gt; </span><span style="color: #9CDCFE">_startPosX</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">_length</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">_startPosX</span><span style="color: #D4D4D4"> += </span><span style="color: #9CDCFE">_length</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"><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">temp</span><span style="color: #D4D4D4"> &lt; </span><span style="color: #9CDCFE">_startPosX</span><span style="color: #D4D4D4"> - </span><span style="color: #9CDCFE">_length</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">_startPosX</span><span style="color: #D4D4D4"> -= </span><span style="color: #9CDCFE">_length</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">ここは「背景がカメラから一定距離離れたら、基準位置を横幅分ずらす」処理です。</p>



<ul class="wp-block-list">
<li>カメラが進み続けると、背景はいつか端が見えてしまう</li>



<li>そこで、背景の“基準位置” <code>_startPosX</code> を <strong>横幅 <code>_length</code> 分だけ移動</strong></li>



<li>結果、背景が途切れずループしているように見えます</li>
</ul>



<p class="wp-block-paragraph">この「基準位置をずらす」方式は、見た目が自然で便利です。</p>



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



<h2 class="wp-block-heading"><span id="toc15">④ Unity上で設定する</span></h2>



<p class="wp-block-paragraph"><code>「Sky、Cloud、Mountain、Mountain2」</code> をまとめて選択し、Add Componentをクリックし③で作成した<strong>BackgroundScroller.cs</strong>を適用します。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="622" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-40-1.png" alt="BackgroundScroller.csの適用" class="wp-image-746" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-40-1.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-40-1-300x187.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-40-1-768x478.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



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



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



<p class="wp-block-paragraph">▶でゲームを実行する。</p>



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



<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 class="wp-block-paragraph">背景が歩行に合わせて少しずつ移動しているのが分かりますね‼️</p>
</div></div>



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



<h2 class="wp-block-heading"><span id="toc17">自作のゲームでも実装しています</span></h2>



<p class="wp-block-paragraph">実際に自作の制作中のゲームでも、この背景スクロール方法を導入しています。<br>背景をゆっくり動かすことで、プレイヤーの移動に奥行きが生まれ、夜の街を移動している雰囲気がかなり出ました🌃<br>また、単純に背景を動かすだけでなく、ビルごとにスクロール速度を変えて遠近感も演出しています。</p>



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

<a href="https://naiterukaiju.com/unity-progress-night-city-background/" title="【ゲーム制作ログ#3】夜の街の背景を作って背景をスクロールさせるようにした！" 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/2026/03/スクリーンショット-2026-03-08-142901-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-08-142901-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2026/03/スクリーンショット-2026-03-08-142901-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2026/03/スクリーンショット-2026-03-08-142901-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【ゲーム制作ログ#3】夜の街の背景を作って背景をスクロールさせるようにした！</div><div class="blogcard-snippet internal-blogcard-snippet">こんにちは！夜の街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.03.08</div></div></div></div></a>
</div>



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



<h2 class="wp-block-heading"><span id="toc18">まとめ</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 class="wp-block-paragraph">最後まで読んでいただきありがとうございました！</p>
</div></div>



<p class="wp-block-paragraph">この記事が少しでもゲーム制作のお役に立てたらうれしいです🦖</p>



<p class="wp-block-paragraph">今回やったこと：</p>



<p class="wp-block-paragraph">✔ 背景オブジェクト作成<br>✔ スクリプト作成<br>✔ プレイヤーの動きに合わせてスクロール</p>



<p class="wp-block-paragraph">これだけでゲームの完成度が一気に上がりますね！<br>背景を作るとゲーム制作のモチベーションもグッと向上すると思うので、<br>ぜひ実装してみてくださいね🦖</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/%e3%80%90unity2d%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%e3%81%9b%e3%82%88%e3%81%86/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Unity2D】効果音（SE）を鳴らしてみよう｜PlayOneShotの使い方とPrefab方式との違いも解説【初心者向け】</title>
		<link>https://naiterukaiju.com/unity-2d-sound-effects-playoneshot/</link>
					<comments>https://naiterukaiju.com/unity-2d-sound-effects-playoneshot/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 06:45:05 +0000</pubDate>
				<category><![CDATA[Unity2D実装解説]]></category>
		<category><![CDATA[2Dゲーム]]></category>
		<category><![CDATA[SE]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[Unity初心者]]></category>
		<category><![CDATA[アクションゲーム]]></category>
		<category><![CDATA[ゲーム制作]]></category>
		<category><![CDATA[ジャンプ]]></category>
		<category><![CDATA[効果音]]></category>
		<category><![CDATA[敵]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=1272</guid>

					<description><![CDATA[Unityでゲームを作っていると、ジャンプなどのアクションを起こした際に効果音を鳴らしたくなることがありますよね🤔 この記事では、 などの方に向けた記事となっています！ Unity2Dで効果音（SE）を鳴らし方はPlay [&#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 class="wp-block-paragraph">こんにちは！Unityで2dゲームを制作中の怪獣です🦖</p>
</div></div>



<p class="wp-block-paragraph">Unityでゲームを作っていると、ジャンプなどのアクションを起こした際に<br>効果音を鳴らしたくなることがありますよね🤔</p>



<p class="wp-block-paragraph">この記事では、</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-9 sbs-think 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/06/kaisya_komaru_man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<ul class="wp-block-list">
<li><strong><span class="marker-under-red">効果音の鳴らせるようになりたい！</span></strong></li>



<li><strong><span class="marker-under-red">効果音ってどうやったら慣らせるの？</span></strong></li>



<li><strong><span class="marker-under-red">PlayOneShotってどう使うの？</span></strong></li>



<li><strong><span class="marker-under-red">Prefab方式との違いは？</span></strong></li>



<li><strong><span class="marker-under-red">どの方法を使えばいいの？</span></strong></li>
</ul>
</div></div>



<p class="wp-block-paragraph">などの方に向けた記事となっています！</p>



<p class="wp-block-paragraph"><strong>Unity2Dで効果音（SE）を鳴らし方はPlayOneShot（音を鳴らす関数）を使う方法が一般的かと思います。</strong><br>この記事では<strong>PlayOneShotでの使い方</strong>を解説しつつ、後半では<strong>Prefab化（音を鳴らす専用オブジェクトを生成するテンプレート）を行った鳴らし方との違い</strong>も紹介します！<br></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 class="wp-block-paragraph">実際に自分が制作中の2Dアクションゲームでは<strong>Prefab化</strong>を行ってSEを鳴らしています。<br><strong>どちらでの方法でもSEを鳴らすことは可能ですが、<span class="marker-under-red">小規模なゲームならPlayOneShotだけでもOKです◎</span></strong></p>
</div></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-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">通常のSEはPlayOneShotがおすすめ</a></li><li><a href="#toc3" tabindex="0">事前準備</a></li><li><a href="#toc4" tabindex="0">① AudioSourceを追加する</a></li><li><a href="#toc5" tabindex="0">② PlayOneShotで効果音を鳴らす基本コード（全文）</a><ol><li><a href="#toc6" tabindex="0">何をしているか1行ずつ解説すると・・</a></li></ol></li><li><a href="#toc7" tabindex="0">③ AudioSource、音声ファイルをアタッチする</a><ol><li><a href="#toc8" tabindex="0">ジャンプ処理などの特定のアクション直後に組み込む例</a></li><li><a href="#toc9" tabindex="0">よくあるエラー・つまずきポイント</a></li></ol></li><li><a href="#toc10" tabindex="0">④ Prefab方式での作り方（任意）</a><ol><li><a href="#toc11" tabindex="0">Prefab方式での作り方手順</a></li><li><a href="#toc12" tabindex="0">Prefab化した効果音を呼び出す処理を書く</a></li><li><a href="#toc13" tabindex="0">Prefab化したものを紐づける</a></li><li><a href="#toc14" tabindex="0">効果音プレハブを自動で削除させる</a></li></ol></li><li><a href="#toc15" tabindex="0">PlayOneShotとPrefab方式の違い</a><ol><li><a href="#toc16" tabindex="0">どっちを使うべき？</a></li></ol></li><li><a href="#toc17" tabindex="0">制作中のゲームで作った例</a></li><li><a href="#toc18" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<ul class="wp-block-list">
<li>PlayOneShot で基本的な効果音の鳴らし方が分かる</li>



<li>音が鳴らないときの確認ポイントも解説</li>



<li>Prefab方式との違いも後半で解説あり</li>



<li>どの方法を選べばいいかが分かる<br>（動画では、「ジャンプ」、「ダメージ」音を実装しています）</li>
</ul>



<p class="wp-block-paragraph"><br><video controls="" src="https://naiterukaiju.com/wp-content/uploads/2025/11/無題のビデオ-‐-Clipchampで作成-9-1.mp4"></video><br></p>



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



<h2 class="wp-block-heading"><span id="toc2">通常のSEはPlayOneShotがおすすめ</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 class="wp-block-paragraph">まず結論として、<strong>通常のSE（<strong><span class="marker-under-blue"><span class="marker-under-red">ジャンプ音、ダメージ音、ボタン音</span></span></strong><span class="marker-under-red">など</span>）なら PlayOneShot が最もシンプルでおすすめ</strong>です！</p>
</div></div>



<p class="wp-block-paragraph">理由は次の通りで、一番シンプルで扱いやすいからです。</p>



<ul class="wp-block-list">
<li><strong>実装がシンプル</strong></li>



<li><strong>1回だけ鳴らす処理に向いている</strong></li>



<li><strong>同じ AudioSource で複数の効果音を扱いやすい</strong></li>



<li><strong>初心者でも詰まりにくい</strong></li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc3">事前準備</span></h2>



<p class="wp-block-paragraph">まずは、<strong>効果音ファイル（.wavや.mp3）を用意</strong>しておきます。<br>→ <code>Assets/Audio/</code> フォルダなどに保存する。（当記事では、ジャンプ、ダメージ効果音を用意）</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="512" height="584" src="https://naiterukaiju.com/wp-content/uploads/2025/11/image.png" alt="効果音ファイルの用意" class="wp-image-423" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/image.png 512w, https://naiterukaiju.com/wp-content/uploads/2025/11/image-263x300.png 263w" sizes="(max-width: 512px) 100vw, 512px" /></figure>



<h2 class="wp-block-heading"><span id="toc4">① AudioSourceを追加する</span></h2>



<p class="wp-block-paragraph"><strong><span class="marker-under-blue"><span class="marker-under-red">PlayOneShot </span></span></strong>を使った実装を行っていきます！<br>まずは<strong>AudioSourceコンポーネント</strong>を追加します！<br>手順は以下の通りです↓</p>



<p class="wp-block-paragraph">１．Hierarchyでプレイヤーオブジェクトを選択する。<br>２．Inspector の <strong>Add Component</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/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー.png" alt="Add Componentを押す" class="wp-image-1258" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー.png 710w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-300x177.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-376x222.png 376w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<p class="wp-block-paragraph">３．<strong>AudioSource</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/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1.png" alt="AudioSource の追加" class="wp-image-1259" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1.png 710w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1-300x177.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1-376x222.png 376w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<p class="wp-block-paragraph">勝手にSEが再生されないように、まずはこの2つを設定値をOFFにしておくのがおすすめです！</p>



<ul class="wp-block-list">
<li><strong>Play On Awake</strong>：OFF</li>



<li><strong>Loop</strong>：OFF</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="536" height="301" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2.png" alt="AudioSource の設定値" class="wp-image-1260" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2.png 536w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2-300x168.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2-320x180.png 320w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2-376x211.png 376w" sizes="(max-width: 536px) 100vw, 536px" /></figure>



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



<h2 class="wp-block-heading"><span id="toc5">② PlayOneShotで効果音を鳴らす基本コード（全文）</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>using UnityEngine;

public class PlayerSE : MonoBehaviour
{
    &#91;SerializeField&#93; private AudioSource _audioSource;
    &#91;SerializeField&#93; private AudioClip _jumpSE;

    public void PlayJumpSE()
    {
        _audioSource.PlayOneShot(_jumpSE);
    }
}</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">PlayerSE</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">AudioSource</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_audioSource</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: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">AudioClip</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_jumpSE</span><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">PlayJumpSE</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">_audioSource</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">PlayOneShot</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_jumpSE</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"/>



<h3 class="wp-block-heading"><span id="toc6">何をしているか1行ずつ解説すると・・</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 AudioSource _audioSource;</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">AudioSource</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_audioSource</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p class="wp-block-paragraph">Inspector で AudioSource を設定するための変数です。</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>&#91;SerializeField&#93; private AudioClip _jumpSE;</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">AudioClip</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_jumpSE</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p class="wp-block-paragraph">再生したい音声ファイルを入れておく変数です。</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>_audioSource.PlayOneShot(_jumpSE);</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">_audioSource</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">PlayOneShot</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_jumpSE</span><span style="color: #D4D4D4">);</span></span></code></pre></div>



<p class="wp-block-paragraph"><strong>指定した AudioClip を1回だけ再生しています。</strong><br>SEのように「必要な瞬間だけ鳴らしたい音」と相性がいいです🙆</p>



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



<h2 class="wp-block-heading"><span id="toc7">③ AudioSource、音声ファイルをアタッチする</span></h2>



<p class="wp-block-paragraph">このままだと音声ファイルとプログラム上が紐づいていないので、アタッチしていきます！</p>



<p class="wp-block-paragraph">１．AudioSourceを追加済みのプレイヤーオブジェクトを選択する<br>２．Inspectorの <code>_audioSource</code> 欄に<strong>AudioSourceコンポーネントをドラッグ</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/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-4.png" alt="AudioSourceコンポーネントをドラッグ" class="wp-image-1267" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-4.png 710w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-4-300x177.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-4-376x222.png 376w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<p class="wp-block-paragraph">３．ソース上で定義した「JumpSE」、に、音声ファイルをそれぞれドラッグします（※ダメージSEにもドラッグしていますが、ジャンプだけでOKです）</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="710" height="420" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-5.png" alt="音声ファイルをドラッグ" class="wp-image-1268" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-5.png 710w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-5-300x177.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！のコピーのコピー-5-376x222.png 376w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<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>if (_bJump)
{
    _rigid.AddForce(Vector2.up * _jumpPower, ForceMode2D.Impulse);
    _audioSource.PlayOneShot(_jumpSE);
}</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">_bJump</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">_rigid</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">AddForce</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">Vector2</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">up</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">_jumpPower</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">ForceMode2D</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Impulse</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">_audioSource</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">PlayOneShot</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_jumpSE</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<p class="wp-block-paragraph">例えば、ジャンプさせた直後に効果音を鳴らしたい場合は、<br>ジャンプ処理の直後に書くことでジャンプしたタイミングで音を鳴らせます！</p>



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



<h3 class="wp-block-heading"><span id="toc9">よくあるエラー・つまずきポイント</span></h3>



<p class="wp-block-paragraph">効果音が上手くならない・・・<br>そんな時は、以下あたりを確認してみてください！</p>



<h4 class="wp-block-heading">音が鳴らない</h4>



<p class="wp-block-paragraph"><strong><span class="marker-under-blue">AudioSource の音量がVolume が 0、Mute になっていないか確認してみてください。</span></strong></p>



<h4 class="wp-block-heading">NullReferenceException が出る</h4>



<ul class="wp-block-list">
<li><code>_audioSource</code></li>



<li><code>_jumpSE</code></li>
</ul>



<p class="wp-block-paragraph"><strong><span class="marker-under-blue">このどちらかが Inspector で設定されていない可能性があります。<br>③の手順が適用されているか確認してみてください</span></strong><span class="marker-under-blue"><strong>。</strong></span><br></p>



<h4 class="wp-block-heading">音が重ならない・変になる</h4>



<p class="wp-block-paragraph"><code>Play()</code> で AudioClip を再生する方法もありますが、SE用途では <code>Play()</code> より <strong>PlayOneShot()</strong> の方が扱いやすいです。<strong>（<code>Play()</code>はBGMやループ再生向きとなっているため）</strong></p>



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



<h2 class="wp-block-heading"><span id="toc10">④ Prefab方式での作り方（任意）</span></h2>



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



<p class="wp-block-paragraph">Prefab方式は、一度作成したオブジェクトをテンプレートとして保存させておく方式です。<br>今回でいうと、<strong><span class="marker-under-red">音を鳴らす専用オブジェクトを生成して再生させておくテンプレート</span></strong>です。<br>Prefab化すると一括管理ができるので、<strong>一つのテンプレートだけ修正すればシーン上に配置したすべてのインスタンスに一括反映</strong>させることができます！</p>



<p class="wp-block-paragraph">たとえば、</p>



<ul class="wp-block-list">
<li>エフェクトと一緒に音を出したい</li>



<li>再生位置も含めて管理したい</li>



<li>オブジェクト単位でまとめたい</li>
</ul>



<p class="wp-block-paragraph">という、<strong>SE以外のイベントと合わせて同時に行いたい場合や、オブジェクト単位でまとめておきたい場合</strong>にはPrefab化しておくのがおススメです！</p>



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



<h3 class="wp-block-heading"><span id="toc11">Prefab方式での作り方手順</span></h3>



<ul class="wp-block-list">
<li>まずは通常の方法と同様に、<strong>効果音ファイル（.wavや.mp3）を用意</strong>します<br>→ <code>Assets/Audio/</code> フォルダなどに保存する</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="512" height="584" src="https://naiterukaiju.com/wp-content/uploads/2025/11/image.png" alt="効果音ファイルの用意" class="wp-image-423" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/image.png 512w, https://naiterukaiju.com/wp-content/uploads/2025/11/image-263x300.png 263w" sizes="(max-width: 512px) 100vw, 512px" /></figure>



<ul class="wp-block-list">
<li>効果音用の<strong>空のGameObject（Create Empty）を作成</strong>する（名前はSEなど）</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アクションゲームを作ろう！のコピーのコピー-6.png" alt="" class="wp-image-1279" srcset="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-6.png 710w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-6-300x177.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-6-376x222.png 376w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<ul class="wp-block-list">
<li>SEオブジェクトに対して以下を設定します
<ul class="wp-block-list">
<li><code>Add Component &gt; AudioSource</code> を追加</li>



<li><code>AudioClip</code> に音声ファイルをドラッグして設定する</li>



<li><strong>Play On Awake</strong>：ON（自動再生）</li>



<li><strong>Loop</strong>：OFF</li>
</ul>
</li>
</ul>



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



<ul class="wp-block-list">
<li><strong>このオブジェクトをPrefab化</strong>する
<ul class="wp-block-list">
<li><code>Assets/Prefabs/SEフォルダを作成</code>しておく</li>



<li>Hierarchyから、SEオブジェクトを上記フォルダへドラッグする（青い箱状のものが出てきたらＯＫ！）</li>
</ul>
</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アクションゲームを作ろう！のコピーのコピー-8.png" alt="" class="wp-image-1282" srcset="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-8.png 710w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-8-300x177.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-8-376x222.png 376w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<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 class="wp-block-paragraph">ここまで出来たら<strong>Prefab化</strong>は成功です！<br><strong>Prefab化</strong>されたので、元のHierarchy上のオブジェクトは不要なので<strong><span class="marker-under-blue">削除してＯＫです。</span></strong></p>
</div></div>



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



<h3 class="wp-block-heading"><span id="toc12">Prefab化した効果音を呼び出す処理を書く</span></h3>



<p class="wp-block-paragraph"><strong>Prefab</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>&#91;SerializeField&#93; private GameObject _sePrefab;

public void PlaySE()
{
    Instantiate(_sePrefab, transform.position, Quaternion.identity);
}</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">_sePrefab</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">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">PlaySE</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">Instantiate</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_sePrefab</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">Quaternion</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">identity</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<p class="wp-block-paragraph"><code><strong>Instantiate()</strong></code> はオブジェクトを<strong>「複製して生成する」</strong>関数です。<br>この1行で、<strong>「_sePrefabをプレイヤーの位置に生成」</strong>します。<br>AudioSource付きのオブジェクトにしているので、<strong>生成＝音が鳴る、ということになります💡</strong></p>



<h3 class="wp-block-heading"><span id="toc13">Prefab化したものを紐づける</span></h3>



<p class="wp-block-paragraph"><strong><span class="marker-under-blue">Unity上の設定からPrefab化したSEを<strong><span class="marker-under-blue"><strong><span class="marker-under-blue">_sePrefabに</span></strong></span></strong>ドラッグします。</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アクションゲームを作ろう！のコピーのコピー-10.png" alt="" class="wp-image-1285" srcset="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-10.png 710w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-10-300x177.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！のコピーのコピー-10-376x222.png 376w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



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



<h3 class="wp-block-heading"><span id="toc14">効果音プレハブを自動で削除させる</span></h3>



<p class="wp-block-paragraph">音が鳴り終わった後もオブジェクトが残ってしまうと、ヒエラルキー上がSEだらけになってしまいます。<br><strong><span class="marker-under-blue"><span class="marker-under-red">音が鳴り終わったら、自動的にDestroyされるようにしておくのがベストです。</span></span></strong><br>以下のようなスクリプトをつけましょう⬇️</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 SE : MonoBehaviour
{
    private AudioSource _audioSource;

    void Start()
    {
        _audioSource = GetComponent&lt;AudioSource>();
        Destroy(gameObject, _audioSource.clip.length);
    }
}</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">SE</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 style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">AudioSource</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_audioSource</span><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">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">_audioSource</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">AudioSource</span><span style="color: #D4D4D4">&gt;();</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">Destroy</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">gameObject</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">_audioSource</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">clip</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">length</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>



<p class="wp-block-paragraph">このスクリプトを<strong>効果音プレハブ</strong>（SE）に追加することで、<br>音が終わると自動的に消えるようになります！</p>



<h2 class="wp-block-heading"><span id="toc15">PlayOneShotとPrefab方式の違い</span></h2>



<p class="wp-block-paragraph">PlayOneShotで実装する方法とPrefab方式で実装する方法は、向いている用途が異なります。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>方法</th><th>向いている用途</th><th>特徴</th></tr></thead><tbody><tr><td>PlayOneShot</td><td>ジャンプ音、ダメージ音、UI音、軽いSE音全般</td><td>シンプルでおすすめ</td></tr><tr><td>Prefab方式</td><td>爆発音、ヒット演出、エフェクトを一緒にSEを鳴らす</td><td>一度作れば拡張しやすい</td></tr></tbody></table></figure>



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



<h3 class="wp-block-heading"><span id="toc16">どっちを使うべき？</span></h3>



<p class="wp-block-paragraph">まずは動かせるようにしたい場合はPlayOneShotがおススメです！</p>



<ul class="wp-block-list">
<li>まずは簡単に実装したい</li>



<li>通常のSEを鳴らしたい</li>



<li>初心者向けにわかりやすく作りたい</li>
</ul>



<p class="wp-block-paragraph">他のイベントとセットで扱いたいなど、機能を拡張したい場合はPrefab方式がおススメです！</p>



<ul class="wp-block-list">
<li>エフェクトとセットで扱いたい</li>



<li>位置情報込みで管理したい</li>



<li>演出を強くしたい</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc17">制作中のゲームで作った例</span></h2>



<figure class="wp-block-video"><video height="948" style="aspect-ratio: 1904 / 948;" width="1904" controls src="https://naiterukaiju.com/wp-content/uploads/2026/04/ナイトウォーク-1-2-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-05-10-14-52-08-Trim.mp4"></video></figure>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-7387b849 wp-block-group-is-layout-flex">
<p class="wp-block-paragraph">今回解説した効果音実装は、自作の制作中ゲームでも取り入れています。<br>（動画は「ジャンプしたとき」「敵に触れた」場合にSEを発動）<br><br>最初はゲームを作るので精一杯だったので効果音は後回ししていましたが、<br>ジャンプやパンチが成功したか分かりづらく操作していて少し物足りなく感じ、<br>ジャンプ時には軽い<strong>ジャンプ音</strong>、パンチ時には<strong>打撃音</strong>を再生するようにしました。<br>結果、プレイヤーの操作に対する反応が分かりやすくなりゲームの爽快感も向上したと思います🦖<br><br>やはり、ゲームにおいて効果音は必須ですね。。</p>
</div>



<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 class="wp-block-paragraph">実際に自分が制作中の2Dアクションゲームでは<strong>Prefab化</strong>を行ってSEを鳴らしています。<br>最初のうちはPlayOneShotだけでも十分ですが、ゲームの規模が大きくなってきたらPrefab化も検討すると管理しやすくなるかと思います✨</p>
</div></div>



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



<h2 class="wp-block-heading"><span id="toc18">まとめ</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 class="wp-block-paragraph">最後まで読んでいただきありがとうございました！</p>
</div></div>



<p class="wp-block-paragraph">Unityで効果音を鳴らすなら、まずは <strong>PlayOneShot</strong> を使うのがおすすめです。</p>



<p class="wp-block-paragraph">特に、ジャンプ音・ダメージ音・ボタン音のような一般的なSEなら、<br><strong>AudioSourceを追加して PlayOneShot で鳴らす方法がシンプルで扱いやすい</strong>です🦖</p>



<p class="wp-block-paragraph">一方で、爆発演出やヒットエフェクトのように、演出と一緒に管理したい場合は Prefab方式も選択肢になりますね🤔</p>



<p class="wp-block-paragraph">まずは PlayOneShot を基準に覚えて、必要になったら Prefab方式を使い分けるのいいかもしれません！</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%e3%80%91%e6%ad%a9%e8%a1%8c%e6%99%82%e3%82%a2%e3%83%8b%e3%83%a1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%ef%bc%882d%ef%bc%89%ef%bd%9canim/" title="【Unity2D】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/26bd1bed9aae0178a08aae993751ecbe.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう</div><div class="blogcard-snippet external-blogcard-snippet">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖今回は 2Dキャラの「歩行」時のアニメーションを を Unity で作る方法を解説します！手順としては、待機、歩行用の画像を用意するAnimation Clip（歩くアニメ）を作成す...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e3%80%91%e6%ad%a9%e8%a1%8c%e6%99%82%e3%82%a2%e3%83%8b%e3%83%a1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%ef%bc%882d%ef%bc%89%ef%bd%9canim/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



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

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



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/unity-2d-sound-effects-playoneshot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2026/04/ナイトウォーク-1-2-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-05-10-14-52-08-Trim.mp4" length="4967916" type="video/mp4" />

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

					<description><![CDATA[Unityでゲーム制作を続けていると、「HPを数値だけで管理すると、プレイヤーにとって分かりづらい…」「体力UIを表示させるようにしたい」て感じることってあるかと思います。 そんなときは、視覚的に分かる体力UIを作るのが [&#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 class="wp-block-paragraph">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



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



<p class="wp-block-paragraph">そんなときは、視覚的に分かる体力UIを作るのがおススメです。<br>体力UIには「HPバー」、「ハートアイコン」など色々な表現方法があるかと思いますが、<br>今回は特に素材も用意せずお手軽に実装できる、<br><strong><span class="marker-under-red">「減っていくHPバー（体力ゲージ） 」</span></strong>の作り方を解説します🦖</p>



<p class="wp-block-paragraph">具体的には、以下の動画の左の上のバーのようなイメージです。</p>



<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"/>



<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 class="wp-block-paragraph">↑敵に触れて徐々にゲージが減っていってるのが分かりますね</p>
</div></div>



<p class="wp-block-paragraph"></p>



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



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



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

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



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




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-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">① 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><li><a href="#toc16" 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>



<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 class="wp-block-paragraph">まずはUIの土台となる<strong>Canvas</strong>を作ります。</p>



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



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



<p class="wp-block-paragraph"><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 class="wp-block-paragraph">背景バーのベースとなる枠部分を追加します！</p>



<p class="wp-block-paragraph">①で作った<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 class="wp-block-paragraph">追加した<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 class="wp-block-paragraph">②で作った背景バーに対して、子オブジェクトとしてゲージ部分を作ります！<br>この③で作る部分は<strong>ゲージのHPが減る見た目の赤い部分を指しています。</strong></p>



<p class="wp-block-paragraph">②で作った<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 class="wp-block-paragraph"><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 class="wp-block-paragraph"><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 class="wp-block-paragraph">➡️<strong><span class="marker-under-red">これで「左から減るHPバー」仕組みになります！</span></strong></p>



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



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



<p class="wp-block-paragraph">こうして分けることで、見た目調整がしやすくなります！</p>



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



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



<p class="wp-block-paragraph">今回は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 class="wp-block-paragraph"><strong><code>_maxHP</code>&nbsp;は最大HP</strong>です。<br><code>_</code><strong><code>currentHP</code>&nbsp;は現在のHP</strong>です。</p>



<p class="wp-block-paragraph"><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 class="wp-block-paragraph">ゲーム開始時に、現在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 class="wp-block-paragraph">ここで<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 class="wp-block-paragraph"><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 class="wp-block-paragraph">これを忘れると動かないので注意です！</p>



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



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



<p class="wp-block-paragraph">上手く動作しない場合は、以下が設定されているか見直してみてください！</p>



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



<p class="wp-block-paragraph">原因：</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 class="wp-block-paragraph">原因：</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>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2026/04/ナイトウォーク-Main-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-06-07-14-22-09-Trim.mp4"
  autoplay
  loop
  muted
  playsinline
  width="640"
  height="360">
</video



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



<p class="wp-block-paragraph">実際に制作中の夜の街アクションゲームでも、最初はこのHPバー方式で実装していました。</p>



<p class="wp-block-paragraph">しかし、最大HPは5個と決めていたのでバーよりもハートアイコンの方が残り体力を直感的に把握しやすいのでは？と思い、現在はハートアイコンを5個並べ、ダメージを受けるたびにハートを減らす方式を採用しています。</p>



<p class="wp-block-paragraph">一方で、最大HPが100など大きいゲームではハート方式だと管理しづらくなるため、その場合は今回紹介した<strong>HPバー方式</strong>の方が適していると思います。<br>なので、<strong><span class="marker-under-blue">ゲームの仕様に合わせて使い分けるのがおすすめです👾</span></strong></p>



<p class="wp-block-paragraph">ハート型ライフUIの作り方は、いつかまた別の記事でまとめようと思います。（いつになるか。。）</p>



<h2 class="wp-block-heading"><span id="toc16">まとめ</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 class="wp-block-paragraph">最後まで読んでいただきありがとうございました！</p>
</div></div>



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



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



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

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



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

			</item>
		<item>
		<title>【Unity2D】敵に触れたらダメージを受ける仕組みの作り方｜（コード全文・解説付き）</title>
		<link>https://naiterukaiju.com/unity-2d-damage-on-collision/</link>
					<comments>https://naiterukaiju.com/unity-2d-damage-on-collision/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sun, 29 Mar 2026 10:58:29 +0000</pubDate>
				<category><![CDATA[Unity2D実装解説]]></category>
		<category><![CDATA[2Dゲーム]]></category>
		<category><![CDATA[Tag判定]]></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>
		<category><![CDATA[衝突判定]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=1022</guid>

					<description><![CDATA[Unityで2Dアクションゲームを作っていくと、 のような機能を追加したくなってきますよね🤔 この記事では、「敵に触れたらプレイヤーがダメージを受ける仕組みの作り方」を、初心者向けにわかりやすく解説します！ 今回は On [&#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 class="wp-block-paragraph">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



<p class="wp-block-paragraph">Unityで2Dアクションゲームを作っていくと、</p>



<ul class="wp-block-list">
<li>敵に触れたらHPを減らしたい</li>



<li>ダメージ処理を入れたい</li>
</ul>



<p class="wp-block-paragraph">のような機能を追加したくなってきますよね🤔</p>



<p class="wp-block-paragraph">この記事では、<br>「<strong><span class="marker-under-red">敵に触れたらプレイヤーがダメージを受ける仕組みの作り方</span></strong>」<br>を、初心者向けにわかりやすく解説します！</p>



<p class="wp-block-paragraph">今回は <code>OnCollisionEnter2D</code>（2Dの当たり判定時に使用される共通メソッド） を使って、<br><strong>敵との接触を判定 → HPを減らす → （<strong>必要なら</strong>）ゲームオーバーにつなげる</strong><br>という流れを作っていきます。<br><br>今回の仕組みを一度作れば、<br><span class="marker-under-blue"><span class="marker-under-red"><strong>「HPが0になったときにゲームオーバーの演出をさせる」</strong><br>「<strong>ゲームオーバー後、リトライさせる」</strong></span></span><br>といった実装も容易に出来るようになります！<br></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 class="wp-block-paragraph">こんな感じで、敵に触れたらHPを減らしてCosoleタブで確認できるようにします。<br>実際のゲームでは、体力UIなどで視覚的にわかるようにすることが一般的ですが、<br>当記事はダメージを受ける仕組みの作り方を中心にまとめております📝<br>（体力UIの作り方は別記事でまとめているため、合わせて実装するとより本格的な仕上がりになります）</p>
</div></div>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2026/03/サンプルゲーム-SampleScene-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-05-27-22-36-22-Trim.mp4"
  autoplay
  loop
  muted
  playsinline
  width="640"
  height="360">
</video



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="548" height="333" src="https://naiterukaiju.com/wp-content/uploads/2026/03/image.png" alt="" class="wp-image-1547" srcset="https://naiterukaiju.com/wp-content/uploads/2026/03/image.png 548w, https://naiterukaiju.com/wp-content/uploads/2026/03/image-300x182.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/03/image-376x228.png 376w" sizes="(max-width: 548px) 100vw, 548px" /></figure>



<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-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">事前準備</a><ol><li><a href="#toc3" tabindex="0">Player側に必要なもの</a></li><li><a href="#toc4" tabindex="0">Enemy側に必要なもの</a></li></ol></li><li><a href="#toc5" tabindex="0">① ダメージを受けるソースコード（全文）</a><ol><li><a href="#toc6" tabindex="0">この処理の流れ</a></li></ol></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">敵に触れたか判定する</a></li><li><a href="#toc11" tabindex="0">ダメージを受ける処理</a></li><li><a href="#toc12" tabindex="0">ゲームオーバー処理</a></li></ol></li><li><a href="#toc13" tabindex="0">③ Enemyタグの設定方法</a><ol><li><a href="#toc14" tabindex="0">Enemyタグを作成する</a></li></ol></li><li><a href="#toc15" tabindex="0">❌よくあるエラー</a><ol><li><a href="#toc16" tabindex="0">敵に触れてもダメージを受けない場合</a></li><li><a href="#toc17" tabindex="0">HPが減らない場合</a></li></ol></li><li><a href="#toc18" tabindex="0">動作確認</a></li><li><a href="#toc19" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<ul class="wp-block-list">
<li>敵に触れた瞬間にダメージを受ける仕組みを作ることができる（ダメージを受けたことをログに出す）</li>



<li>プレイヤーのHPを減らすことができる</li>



<li>HPが0になったときの処理につなげることができる</li>



<li>敵との接触判定の基本がわかる</li>
</ul>



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



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



<p class="wp-block-paragraph">この処理を正しく動かすには、事前に以下がついていることを前提としています。</p>



<h3 class="wp-block-heading"><span id="toc3">Player側に必要なもの</span></h3>



<ul class="wp-block-list">
<li>Rigidbody2D</li>



<li>Collider2D</li>



<li>Playerスクリプト</li>
</ul>



<h3 class="wp-block-heading"><span id="toc4">Enemy側に必要なもの</span></h3>



<ul class="wp-block-list">
<li>Collider2D</li>



<li>必要に応じて Rigidbody2D</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc5">① ダメージを受けるソースコード（全文）</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>using UnityEngine;

public class Player : MonoBehaviour
{
    &#91;SerializeField&#93; private int _maxHP = 3;
    private int _currentHP;

    private void Start()
    {
        _currentHP = _maxHP;
    }

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

    private void _TakeDamage(int damage)
    {
        _currentHP -= damage;
        _currentHP = Mathf.Clamp(_currentHP, 0, _maxHP);

        Debug.Log("現在のHP: " + _currentHP);

        if (_currentHP &lt;= 0)
        {
            _GameOver();
        }
    }

    private void _GameOver()
    {
        Debug.Log("ゲームオーバー");
    }
}</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">int</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_maxHP</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">3</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">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>
<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">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: #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">_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: #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: #9CDCFE">Debug</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;現在のHP: &quot;</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: #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>
<span class="line"><span style="color: #D4D4D4">        {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #DCDCAA">_GameOver</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: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">_GameOver</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">Debug</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;ゲームオーバー&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></code></pre></div>



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



<h3 class="wp-block-heading"><span id="toc6">この処理の流れ</span></h3>



<p class="wp-block-paragraph">このコードでは、次の流れでダメージ処理を行っています↓</p>



<ol class="wp-block-list">
<li>プレイヤーが敵にぶつかる</li>



<li><code>OnCollisionEnter2D()</code> が呼ばれる</li>



<li>相手が Enemy タグなら <code>_TakeDamage(1)</code> を実行する</li>



<li>HPを1減らし、Debug.Logでコンソールに現在のHPを出力する。</li>



<li>HPが0ならゲームオーバー処理へ進む</li>
</ol>



<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 = 3;
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">3</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 class="wp-block-paragraph"><code>_maxHP</code> は最大HPです。<strong>（ここでは3を最大値としています）</strong><br><code>_currentHP</code> は現在のHPを管理する変数です。</p>



<p class="wp-block-paragraph"><code>SerializeField</code> を付けることで、Unity上のInspector から数値を調整することもできます！</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 class="wp-block-paragraph">ゲーム開始時に、現在HPを最大HPと同じ値にしています。<br>これを入れておくことで、<strong>最初から満タンの状態でスタート</strong>できます！</p>



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



<h3 class="wp-block-heading"><span id="toc10">敵に触れたか判定する</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 OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.CompareTag("Enemy"))
    {
        _TakeDamage(1);
    }
}</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">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: #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">_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></code></pre></div>



<p class="wp-block-paragraph"><code>OnCollisionEnter2D()</code> は、<strong>2Dの当たり判定がぶつかった瞬間に呼ばれるメソッド</strong>です。</p>



<p class="wp-block-paragraph"><code>collision.gameObject.CompareTag("Enemy")</code> で、<br>ぶつかった相手が Enemy タグかどうかを確認しています。</p>



<p class="wp-block-paragraph">もし相手が敵なら、<strong><code>_TakeDamage(1)</code> を呼び出して、<span class="marker-under-red">1ダメージ与えます</span></strong>！</p>



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



<h3 class="wp-block-heading"><span id="toc11">ダメージを受ける処理</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 _TakeDamage(int damage)
{
    _currentHP -= damage;
    _currentHP = Mathf.Clamp(_currentHP, 0, _maxHP);

    Debug.Log("現在のHP: " + _currentHP);

    if (_currentHP &lt;= 0)
    {
        _GameOver();
    }
}</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">_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: #9CDCFE">Debug</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;現在のHP: &quot;</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: #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>
<span class="line"><span style="color: #D4D4D4">    {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">_GameOver</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>



<p class="wp-block-paragraph">このメソッドでは、プレイヤーがダメージを受けたときの処理をまとめています。</p>



<p class="wp-block-paragraph"><code><strong><span class="marker-under-blue"><span class="marker-blue">_currentHP -= damage;</span></span></strong></code><br>　現在のHPから、受けたダメージ分だけ引いています。</p>



<p class="wp-block-paragraph"><code><strong><span class="marker-under-blue"><span class="marker-blue">Mathf.Clamp(_currentHP, 0, _maxHP);</span></span></strong></code><br>　HPが 0 未満になったり、最大値を超えたりしないように制限しています。</p>



<p class="wp-block-paragraph">たとえばHPが1のときに2ダメージ受けても、-1にはならず 0 で止まります。</p>



<p class="wp-block-paragraph"><strong><span class="marker-under-blue">Debug.Log(&#8220;現在のHP: &#8221; + _currentHP);</span></strong><br>　敵にふれるたびに、現在のHPをコンソールに出します。</p>



<p class="wp-block-paragraph"><code><strong><span class="marker-under-blue"><span class="marker-blue">if (_currentHP &lt;= 0)</span></span></strong></code><br>　HPが0以下になったら、ゲームオーバー処理へ進みます。</p>



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



<h3 class="wp-block-heading"><span id="toc12">ゲームオーバー処理</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 _GameOver()
{
    Debug.Log("ゲームオーバー");
}</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">_GameOver</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">Debug</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;ゲームオーバー&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<p class="wp-block-paragraph">ここでは仮で <code>Debug.Log</code> を出しているだけですが、実際にはここに</p>



<ul class="wp-block-list">
<li>ゲームオーバーUIを表示する</li>



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



<li>リトライ画面を出す</li>
</ul>



<p class="wp-block-paragraph">といった処理をつなげられます！</p>



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



<h2 class="wp-block-heading"><span id="toc13">③ Enemyタグの設定方法</span></h2>



<h3 class="wp-block-heading"><span id="toc14">Enemyタグを作成する</span></h3>



<p class="wp-block-paragraph">敵オブジェクトには <code>Enemy</code> タグを設定しておきます。</p>



<p class="wp-block-paragraph">↓手順は以下です！</p>



<ol class="wp-block-list">
<li><strong>敵オブジェクトを選択する</strong></li>



<li><strong>Inspector 上部の Tag を開く</strong></li>



<li><strong><code>Enemy</code> がなければ Add Tag で追加する</strong></li>



<li><strong>敵オブジェクトに <code>Enemy</code> タグを設定する</strong></li>
</ol>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="418" src="https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-11-225746-1024x418.png" alt="Enemyのタグ設定の画面" class="wp-image-296" srcset="https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-11-225746-1024x418.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-11-225746-300x123.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-11-225746-768x314.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/10/スクリーンショット-2025-10-11-225746.png 1246w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



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



<p class="wp-block-paragraph">タグ判定では、以下のような書き方もあります。</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>if (collision.gameObject.tag == "Enemy")</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">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;Enemy&quot;</span><span style="color: #D4D4D4">)</span></span></code></pre></div>



<p class="wp-block-paragraph">ただし、Unityでは <code>CompareTag()</code> の方が一般的です。</p>



<p class="wp-block-paragraph">理由は、</p>



<ul class="wp-block-list">
<li>意図がわかりやすい</li>



<li>タグ比較として書き方が明確</li>



<li>ミスに気づきやすい</li>
</ul>



<p class="wp-block-paragraph">からです。</p>



<p class="wp-block-paragraph">そのため、初心者のうちは <code>CompareTag()</code> を使う形で覚えておくのがおすすめです✨</p>



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



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



<p class="wp-block-paragraph">ダメージ判定が上手くいかない場合は、以下辺りを確認してみてください！</p>



<h3 class="wp-block-heading"><span id="toc16">敵に触れてもダメージを受けない場合</span></h3>



<ul class="wp-block-list">
<li>敵オブジェクトに <code>Enemy</code> タグが付いているか</li>



<li>Player と Enemy の両方に Collider2D があるか</li>



<li>少なくともどちらかに Rigidbody2D が付いているか</li>



<li><code>OnCollisionEnter2D()</code> のスペルミスがないか</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc17">HPが減らない場合</span></h3>



<ul class="wp-block-list">
<li><code>_TakeDamage(1)</code> が呼ばれているか</li>



<li>Console に <code>現在のHP</code> が表示されるか</li>



<li><code>_currentHP</code> を別の処理で上書きしていないか</li>
</ul>



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



<p class="wp-block-paragraph">▶で動作確認をする。</p>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2026/03/サンプルゲーム-SampleScene-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-05-27-22-36-22-Trim.mp4"
  autoplay
  loop
  muted
  playsinline
  width="640"
  height="360">
</video



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



<p class="wp-block-paragraph">敵に触れると、Consoleタブから<strong>「現在のHP:〇〇」</strong>というログが出力されるかと思います。<br>何回か触れて_maxHPで設定した3HPが徐々に減り、0になると<strong>「ゲームオーバー」</strong>と出力されるようになります📝</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="548" height="333" src="https://naiterukaiju.com/wp-content/uploads/2026/03/image.png" alt="" class="wp-image-1547" srcset="https://naiterukaiju.com/wp-content/uploads/2026/03/image.png 548w, https://naiterukaiju.com/wp-content/uploads/2026/03/image-300x182.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/03/image-376x228.png 376w" sizes="(max-width: 548px) 100vw, 548px" /></figure>



<h2 class="wp-block-heading"><span id="toc19">まとめ</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 class="wp-block-paragraph">最後まで読んでいただきありがとうございました！</p>
</div></div>



<p class="wp-block-paragraph">今回は、<code>OnCollisionEnter2D()</code> を使って<br><strong>敵に触れたらダメージを受ける処理</strong> を実装する方法を解説しました！</p>



<p class="wp-block-paragraph">今回のポイントは以下の通りです↓</p>



<ul class="wp-block-list">
<li><strong>敵との接触判定は基本 <code>OnCollisionEnter2D()</code> で行う</strong></li>



<li><strong><code>CompareTag("Enemy")</code> で相手が敵か確認する</strong></li>



<li><strong><code>_TakeDamage()</code> にダメージ処理をまとめる</strong></li>



<li><strong>HPが0になったらゲームオーバー処理につなげられる</strong></li>
</ul>



<p class="wp-block-paragraph">この処理は、2Dアクションゲームの基本となる部分です。<br>まずはシンプルな形で実装して、あとから</p>



<ul class="wp-block-list">
<li>敵に触れた後、無敵時間を設ける</li>



<li>点滅演出をさせる</li>



<li>ダメージを受けた後のSEをつける</li>
</ul>



<p class="wp-block-paragraph">などを追加していくのがおすすめです👾</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 class="wp-block-paragraph">敵に触れた場合にダメージを受けるようにしましたが、実際のゲームではHPゲージ（体力バー）が視覚的に徐々に減っていくことが一般的ですよね。<br><br>UIの作り方は別記事でまとめているため、こちらも合わせて実装すると更にゲームらしい表現ができます🦖</p>
</div></div>



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

<a href="https://naiterukaiju.com/unity-2d-hp-bar-image/" title="【Unity2D】HPゲージ（体力UI）をImageで簡単に作る｜（コードあり・解説付き）【初心者向け】" 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/2026/04/Unityで2Dアクションゲームを作ろう！-5-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！-5-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！-5-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2026/04/Unityで2Dアクションゲームを作ろう！-5-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】HPゲージ（体力UI）をImageで簡単に作る｜（コードあり・解説付き）【初心者向け】</div><div class="blogcard-snippet internal-blogcard-snippet">Unityでゲーム制作を続けていると、「HPを数値だけで管理すると、プレイヤーにとって分かりづらい…」「体力UIを表示させるようにしたい」て感じることってあるかと思います。そんなときは、視覚的に分かる体力UIを作るのがおススメです。体力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.04.05</div></div></div></div></a>
</div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/unity-2d-damage-on-collision/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2026/03/サンプルゲーム-SampleScene-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-05-27-22-36-22-Trim.mp4" length="4498036" type="video/mp4" />

			</item>
		<item>
		<title>【Unity2D】プレイヤーを追従させるカメラを作るには？｜実装方法（コード全文・解説付き）</title>
		<link>https://naiterukaiju.com/unity-2d-camera-follow-script/</link>
					<comments>https://naiterukaiju.com/unity-2d-camera-follow-script/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sat, 14 Mar 2026 07:47:37 +0000</pubDate>
				<category><![CDATA[Unity2D実装解説]]></category>
		<category><![CDATA[2Dゲーム]]></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>
		<category><![CDATA[追従]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=922</guid>

					<description><![CDATA[Unityで横スクロール型のアクションゲームを作っていると、プレイヤーにカメラが付いていかずプレイヤーがどこにいるか分からなくなりますよね🤔これは、プレイヤーにカメラを追従させる機能が実装されていないためです。カメラ追従 [&#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 class="wp-block-paragraph">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



<p class="wp-block-paragraph">Unityで横スクロール型のアクションゲームを作っていると、<br>プレイヤーにカメラが付いていかずプレイヤーがどこにいるか分からなくなりますよね🤔<br>これは、プレイヤーにカメラを追従させる機能が実装されていないためです。<br>カメラ追従は横スクロール型の2Dアクションゲームにおいて必須の処理です。</p>



<p class="wp-block-paragraph">この記事では、</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-9 sbs-think 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/06/kaisya_komaru_man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p class="wp-block-paragraph">「プレイヤーの歩行に合わせてカメラも追従させるようにしたい」<br>「プレイヤーを歩かせてもカメラが追従しない」<br>「カメラ追従させたが画面がガタつく・・・」<br>「横だけ追従したい」</p>
</div></div>



<p class="wp-block-paragraph">といった方に向けた内容となっています！</p>



<p class="wp-block-paragraph">この記事では、<strong><span class="marker-under-red">プレイヤーにカメラを追従させる基本実装</span></strong>を、<strong>コード全文つき</strong>で、<br>一行ずつ初心者向けに解説します！<br></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-10" checked><label class="toc-title" for="toc-checkbox-10">目次</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><ol><li><a href="#toc3" tabindex="0">各処理の説明（初心者向け）</a></li><li><a href="#toc4" tabindex="0">変数の定義</a></li><li><a href="#toc5" tabindex="0">Start()</a></li><li><a href="#toc6" tabindex="0">LateUpdate()</a></li></ol></li><li><a href="#toc7" tabindex="0">② カメラにCameraManagerを適用する</a></li><li><a href="#toc8" tabindex="0">③ 上下にも追従させたい場合は？</a></li><li><a href="#toc9" tabindex="0">④ よくあるエラーと対処法</a><ol><li><a href="#toc10" tabindex="0">カメラがガクついてみえる</a></li><li><a href="#toc11" tabindex="0">カメラが動かない</a></li></ol></li><li><a href="#toc12" tabindex="0">制作中のゲームで実装した例</a></li><li><a href="#toc13" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">この記事で出来るようになること</span></h2>



<ul class="wp-block-list">
<li>プレイヤーの<strong>横移動に合わせて追従</strong>するカメラ処理を作ることができる</li>



<li>上下にも追従させる方法も合わせて解説あり</li>
</ul>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2025/10/無題のビデオ-‐-Clipchampで作成-1.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">① カメラ追従させるコード（全文）</span></h2>



<p class="wp-block-paragraph">カメラの動きを管理するCameraManager.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;

public class CameraManager : MonoBehaviour
{
    &#91;Header("追従対象")&#93;
    &#91;SerializeField&#93; private Player _player;     // Inspector側でPlayerオブジェクトをドラッグ

    &#91;Header("カメラ位置オフセット")&#93;
    public Vector3 offset = new Vector3(0f, 0f, -10f); // Zは-10で2D既定の距離

    private Transform _playerT;    // プレイヤーの位置情報を扱うための変数

    void Start()
    {
        // 1) 追従対象の参照を安全に確保
        if (_player == null)
            _player = FindObjectOfType&lt;Player>();

        if (_player != null)
            _playerT = _player.transform;
    }
    // Update のあとに毎フレーム呼ばれる処理
    void LateUpdate()
    {
        if (_playerT == null) return;

        // 2) 「プレイヤーの位置 + オフセット」を 目標位置 として計算
        Vector3 target = _playerT.position + offset;

        // 3) 横スクロール想定
        //    Y座標（縦方向）とZ座標（奥行き） は固定にして「横スクロール専用カメラ」にする
        float nextX = target.x;
        float nextY = transform.position.y;   // 縦は固定（必要なら追従に変更可）
        float nextZ = target.z;               // -10固定

        // 4) 実際にカメラを移動
        transform.position = new Vector3(nextX, nextY, nextZ);
    }
}
</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">CameraManager</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;追従対象&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">Player</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_player</span><span style="color: #D4D4D4">;     </span><span style="color: #6A9955">// Inspector側でPlayerオブジェクトをドラッグ</span></span>
<span class="line"></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;カメラ位置オフセット&quot;</span><span style="color: #D4D4D4">)&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Vector3</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">offset</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector3</span><span style="color: #D4D4D4">(0</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">, 0</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">, -10</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">); </span><span style="color: #6A9955">// Zは-10で2D既定の距離</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">Transform</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_playerT</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: #6A9955">// 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">_player</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">_player</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">FindObjectOfType</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">Player</span><span style="color: #D4D4D4">&gt;();</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">_player</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">_playerT</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_player</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">transform</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">// Update のあとに毎フレーム呼ばれる処理</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">LateUpdate</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">_playerT</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: #6A9955">// 2) 「プレイヤーの位置 + オフセット」を 目標位置 として計算</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">Vector3</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_playerT</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">position</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">offset</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// 3) 横スクロール想定</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">//    Y座標（縦方向）とZ座標（奥行き） は固定にして「横スクロール専用カメラ」にする</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nextX</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nextY</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">;   </span><span style="color: #6A9955">// 縦は固定（必要なら追従に変更可）</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nextZ</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">z</span><span style="color: #D4D4D4">;               </span><span style="color: #6A9955">// -10固定</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// 4) 実際にカメラを移動</span></span>
<span class="line"><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: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector3</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">nextX</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">nextY</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">nextZ</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="toc3">各処理の説明（初心者向け）</span></h3>



<p class="wp-block-paragraph">※以下は各処理の説明です。わかっている方は②までスキップしてください！</p>



<h3 class="wp-block-heading"><span id="toc4">変数の定義</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;Header("追従対象")&#93;
 &#91;SerializeField&#93; private Player _player;</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: #DCDCAA">Header</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;追従対象&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: #9CDCFE">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Player</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_player</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



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



<li>ここに<strong><span class="marker-under-red">プレイヤーオブジェクト（追従対象）</span></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> &#91;Header("カメラ位置オフセット")&#93;
 public Vector3 offset = new Vector3(0f, 0f, -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: #DCDCAA">Header</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;カメラ位置オフセット&quot;</span><span style="color: #D4D4D4">)&#93;</span></span>
<span class="line"><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">public</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Vector3</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">offset</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector3</span><span style="color: #D4D4D4">(0</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">, 0</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">, -10</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">);</span></span></code></pre></div>



<ul class="wp-block-list">
<li><strong>カメラとプレイヤーの距離（ずれ）を設定</strong>しているもの</li>



<li>カメラをプレイヤーと同じX・Y位置にして、Z方向に<strong>10</strong>だけ離した位置に置く（＝2Dゲームでちょうどいい距離）</li>
</ul>



<h3 class="wp-block-heading"><span id="toc5">Start()</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>    void Start()
    {
        // 1) 追従対象の参照を安全に確保
        if (_player == null)
            _player = FindObjectOfType&lt;Player>();

        if (_player != null)
            _playerT = _player.transform;
    }</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: #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: #6A9955">// 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">_player</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">_player</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">FindObjectOfType</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">Player</span><span style="color: #D4D4D4">&gt;();</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">_player</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">_playerT</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_player</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">transform</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>Startは<strong>ゲーム開始時に1回だけ呼ばれる処理</strong></li>



<li>ここでは「プレイヤーを探して変数に入れる」「初期のカメラ位置を覚える」ことをしています。</li>



<li>もし <code>_player</code> がまだ何も設定されていなければ、<br>シーンの中から <strong>Player スクリプトを持つオブジェクトを探して</strong> 自動で設定する。</li>



<li>Unity上の設定で「CameraManager」のInspector<code>内の_playerが</code><strong><code>ドラッグして設定されていなければ、</code>シーンの中から自動で探す</strong>ということをしています。（設定し忘れても自動でプレイヤーを見つけて追いかけるようにする保険です◎）</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc6">LateUpdate()</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>
    void LateUpdate()
    {
        if (_playerT == null) return;

        // 2) 「プレイヤーの位置 + オフセット」を 目標位置 として計算
        Vector3 target = _playerT.position + offset;

        // 3) 横スクロール想定
        //    Y座標（縦方向）とZ座標（奥行き） は固定にして「横スクロール専用カメラ」にする
        float nextX = target.x;
        float nextY = transform.position.y;   // 縦は固定（必要なら追従に変更可）
        float nextZ = target.z;               // -10固定

        // 4) 実際にカメラを移動
        transform.position = new Vector3(nextX, nextY, nextZ);
    }</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: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">LateUpdate</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">_playerT</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: #6A9955">// 2) 「プレイヤーの位置 + オフセット」を 目標位置 として計算</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">Vector3</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_playerT</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">position</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">offset</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// 3) 横スクロール想定</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">//    Y座標（縦方向）とZ座標（奥行き） は固定にして「横スクロール専用カメラ」にする</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nextX</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nextY</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">;   </span><span style="color: #6A9955">// 縦は固定（必要なら追従に変更可）</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nextZ</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">z</span><span style="color: #D4D4D4">;               </span><span style="color: #6A9955">// -10固定</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// 4) 実際にカメラを移動</span></span>
<span class="line"><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: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector3</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">nextX</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">nextY</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">nextZ</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><strong>LateUpdate</strong>は<strong>Updateのあとに毎フレーム呼ばれる処理</strong>です</li>



<li><strong>カメラの位置を計算後、</strong>横方向（nextX）の変数に代入し、実際にカメラを移動しています</li>



<li><strong><span class="marker-under-blue"><span class="marker-under-red">プレイヤーの移動が終わったあとにカメラを動かすので、画面がガタつきにくくなります</span></span></strong></li>
</ul>



<h4 class="wp-block-heading">処理の流れ</h4>



<p class="wp-block-paragraph">1.<strong>カメラの位置設定</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> Vector3 target = _playerT.position + offset;</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">Vector3</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_playerT</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">position</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">offset</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<ul class="wp-block-list">
<li>プレイヤーの位置に「オフセット」を足して、「カメラがどの位置に動くべきか」を計算</li>



<li>「カメラが移動したい位置」＝プレイヤーの位置＋少しずらす距離（オフセット）</li>
</ul>



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



<p class="wp-block-paragraph">2.<strong>横だけ追従、縦は固定</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> float nextX = target.x; 
 float nextY = transform.position.y; 
 float nextZ = target.z;</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">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nextX</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">; </span></span>
<span class="line"><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nextY</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">; </span></span>
<span class="line"><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nextZ</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">z</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<ul class="wp-block-list">
<li><code>nextX</code>（横方向）はプレイヤーに合わせる</li>



<li><code>nextY</code>（縦方向）は動かさず固定</li>



<li><code>nextZ</code>（奥行き）は-10で固定（2Dゲームの標準的なカメラ距離）<br>これで<strong><span class="marker-under-red">横スクロール専用</span></strong>のカメラワークになります🏃</li>
</ul>



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



<p class="wp-block-paragraph">3.<strong>カメラを実際に移動</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>transform.position = new Vector3(nextX, nextY, nextZ);</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">transform</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">position</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector3</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">nextX</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">nextY</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">nextZ</span><span style="color: #D4D4D4">);</span></span></code></pre></div>



<ul start="4" class="wp-block-list">
<li>計算した座標をカメラに反映させて、画面を実際に動かします！</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc7">② カメラにCameraManagerを適用する</span></h2>



<p class="wp-block-paragraph">カメラオブジェクト（MainCamera）を選択した状態でAdd Componentをクリックし、<br>先ほど作った<strong>CameraManager</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/2025/10/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2.png" alt="Add Componentの設定方法" class="wp-image-961" srcset="https://naiterukaiju.com/wp-content/uploads/2025/10/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2.png 710w, https://naiterukaiju.com/wp-content/uploads/2025/10/Unityで2Dアクションゲームを作ろう！のコピーのコピー-2-300x177.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



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



<p class="wp-block-paragraph"><strong>「追従対象」</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/2025/10/Unityで2Dアクションゲームを作ろう！のコピーのコピー.png" alt="追従対象の設定方法" class="wp-image-960" srcset="https://naiterukaiju.com/wp-content/uploads/2025/10/Unityで2Dアクションゲームを作ろう！のコピーのコピー.png 710w, https://naiterukaiju.com/wp-content/uploads/2025/10/Unityで2Dアクションゲームを作ろう！のコピーのコピー-300x177.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<h2 class="wp-block-heading"><span id="toc8">③ 上下にも追従させたい場合は？</span></h2>



<p class="wp-block-paragraph">このままだと上下移動が激しいと見切れてしまうので、<br>ジャンプに合わせてカメラも上下させたい場合は、Yを固定せずに追従させます。<br>以下のように設定すれば上にもカメラが付いてきます💡</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>float nextY = target.y;</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">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nextY</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2026/03/サンプルゲーム-SampleScene-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-03-14-16-28-20-Trim.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="toc9">④ よくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc10">カメラがガクついてみえる</span></h3>



<p class="wp-block-paragraph">私が開発中にハマったポイントですが、プレイヤーの移動、カメラ追従をUpdate で全て行うと<strong><span class="marker-under-blue">実行タイミングのズレから画面が震えるような挙動になることがあり</span></strong><span class="marker-under-blue"><strong>ました。</strong></span><br>Updateメソッド内で動かすことも可能ではありますが、<br>挙動が変になるため<strong><span class="marker-under-red">移動処理はUpdate、</span><span class="marker-under-red">カメラ処理は、<code>LateUpdate</code>メソッド内で分けて動かすことが一般的です</span></strong>！</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">LateUpdateは<strong>「Updateの処理が終わった後」</strong>に実行されます。</p>



<p class="wp-block-paragraph">今回のように、<br>プレイヤーが移動する<br>↓<br>その後カメラが追従する</p>



<p class="wp-block-paragraph">という処理の場合は<br>LateUpdateを使うことで自然な動きになります！</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc11">カメラが動かない</span></h3>



<p class="wp-block-paragraph">考えられる原因として多いのは、追従対象が設定されていないことです。<br>以下が設定されているか確認してみてください！</p>



<ul class="wp-block-list">
<li>Main Cameraにスクリプトを適用しているか</li>



<li><code>target</code> にプレイヤーを入れているか</li>



<li>プレイヤーの Transform を参照できているか</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc12">制作中のゲームで実装した例</span></h2>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2026/03/ナイトウォーク-Main-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-03-08-14-22-45-Trim.mp4"
  autoplay
  loop
  muted
  playsinline
  width="640"
  height="360">
</video



<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 class="wp-block-paragraph">今回紹介したカメラ追従処理は、実際に制作中の夜の街アクションゲームでもこのように使用しています！<br>右に移動するとそれに合わせてカメラも追従するようになっており、プレイヤーにカメラがついていっているのが分かります。<br><br>当初は横方向だけ追従させていましたが、このゲームはビルからビルへ飛び移る場面が多く上下移動が激しいステージなので、高い場所へジャンプした際にプレイヤーが画面外へ見切れてしまうことがありました。<br>そのためY方向の追従も追加し、プレイヤーが常に見やすいよう調整しています。<br><br>カメラ追従は自分のゲームの仕様に合わせて調整するとよいでしょう🦖</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc13">まとめ</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 class="wp-block-paragraph">最後まで読んでいただきありがとうございました！</p>
</div></div>



<p class="wp-block-paragraph">今回の記事では<br><strong>Unityでプレイヤーを追従するカメラの作り方</strong>を解説しました👾</p>



<p class="wp-block-paragraph">実装の内容をまとめると以下の通りです。</p>



<ol class="wp-block-list">
<li>プレイヤーのTransform（位置情報等）を取得する</li>



<li>LateUpdateでプレイヤーの位置を取得してカメラを動かす量を計算</li>



<li>カメラの位置をプレイヤーに合わせて移動する</li>
</ol>



<p class="wp-block-paragraph">この処理を入れることで、<br><strong>プレイヤーの動きに合わせてカメラが自然に追従するようになります</strong>！</p>



<p class="wp-block-paragraph">2Dアクションゲームでは必須の処理なので<br>ぜひ実装してみてください！</p>



<p class="wp-block-paragraph">他にも、<br><strong>「歩行したときにアニメーションもつけるようにしたい」</strong><br><strong>「プレイヤーをジャンプさせるようにしたい」</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%e3%80%91%e6%ad%a9%e8%a1%8c%e6%99%82%e3%82%a2%e3%83%8b%e3%83%a1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%ef%bc%882d%ef%bc%89%ef%bd%9canim/" title="【Unity2D】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/26bd1bed9aae0178a08aae993751ecbe.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう</div><div class="blogcard-snippet external-blogcard-snippet">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖今回は 2Dキャラの「歩行」時のアニメーションを を Unity で作る方法を解説します！手順としては、待機、歩行用の画像を用意するAnimation Clip（歩くアニメ）を作成す...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e3%80%91%e6%ad%a9%e8%a1%8c%e6%99%82%e3%82%a2%e3%83%8b%e3%83%a1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%ef%bc%882d%ef%bc%89%ef%bd%9canim/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



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

<a href="https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e3%82%b8%e3%83%a3%e3%83%b3%e3%83%97%e5%87%a6%e7%90%86%e3%82%92%e5%ae%9f%e8%a3%85%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/" title="【Unity2D】プレイヤーをジャンプさせる方法｜AddForce以外の方法も比較（コード全文・解説付き）" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/0ccf361de07c1b7781bea14f6da536e9.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】プレイヤーをジャンプさせる方法｜AddForce以外の方法も比較（コード全文・解説付き）</div><div class="blogcard-snippet external-blogcard-snippet">Unity2Dでプレイヤーをジャンプさせたいけど、ジャンプのさせ方が分からないジャンプが高くなりすぎる 連続ジャンプしてしまう 地面判定がうまくいかないといったことはありませんか？この記事では、ジャンプさせる実装法(解説付き)を初心者向けに...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e3%82%b8%e3%83%a3%e3%83%b3%e3%83%97%e5%87%a6%e7%90%86%e3%82%92%e5%ae%9f%e8%a3%85%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/unity-2d-camera-follow-script/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2025/10/無題のビデオ-‐-Clipchampで作成-1.mp4" length="3356935" type="video/mp4" />
<enclosure url="https://naiterukaiju.com/wp-content/uploads/2026/03/サンプルゲーム-SampleScene-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-03-14-16-28-20-Trim.mp4" length="10157843" type="video/mp4" />
<enclosure url="https://naiterukaiju.com/wp-content/uploads/2026/03/ナイトウォーク-Main-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-03-08-14-22-45-Trim.mp4" length="12043311" type="video/mp4" />

			</item>
		<item>
		<title>【ゲーム制作ログ#3】夜の街の背景を作って背景をスクロールさせるようにした！</title>
		<link>https://naiterukaiju.com/unity-progress-night-city-background/</link>
					<comments>https://naiterukaiju.com/unity-progress-night-city-background/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sun, 08 Mar 2026 05:34:04 +0000</pubDate>
				<category><![CDATA[個人制作ゲーム開発記]]></category>
		<category><![CDATA[2Dゲーム]]></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>
		<category><![CDATA[夜街]]></category>
		<category><![CDATA[背景]]></category>
		<category><![CDATA[背景スクロール]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=878</guid>

					<description><![CDATA[こんにちは！夜の街2Dアクションゲームを制作中の怪獣と申します🦖 かなり前回の進捗記事から時間が経ってしまいましたが、、本日は自作ゲームの進捗報告になります。 目次 ①ビル群の背景を作成②背景をスクロール対応に③背景スク [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">こんにちは！<br>夜の街2Dアクションゲームを制作中の怪獣と申します🦖<br><br>かなり前回の進捗記事から時間が経ってしまいましたが、、<br>本日は自作ゲームの進捗報告になります。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</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">③背景スクロールの実装方法は別記事で紹介</a></li><li><a href="#toc4" tabindex="0">④まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">①ビル群の背景を作成</span></h2>



<p class="wp-block-paragraph">今回のゲームは夜の街が舞台なので、ステージの雰囲気作りのためにビル群の背景を作成しました🌃<br>プレイヤーがビルの上を移動していくゲームなので、背景にも街らしさや高さを感じられる見た目を意識しています。<br>また、手前のビル1、奥のビル2でレイヤーを分けて奥行き感を出すようにしています！</p>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2026/03/ナイトウォーク-Main-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-03-08-14-22-45-Trim.mp4"
  autoplay
  loop
  muted
  playsinline
  width="640"
  height="360">
</video



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading"><span id="toc2">②背景をスクロール対応に</span></h2>



<p class="wp-block-paragraph">背景画像を置いただけの状態だと背景が置いてきぼりになってしまうので、<br>プレイヤーの歩行に合わせて背景もスクロールするように実装しました。</p>



<p class="wp-block-paragraph">これによって、画面に動きが出てステージに広がりを感じやすくなりました。<br>見た目の変化だけでなく、ゲームらしい雰囲気もかなり出てきたと思います！</p>



<h2 class="wp-block-heading"><span id="toc3">③背景スクロールの実装方法は別記事で紹介</span></h2>



<p class="wp-block-paragraph">背景スクロールの実装方法については別記事でまとめています。<br>コードや設定方法を知りたい方は、こちらの記事をご覧ください！</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity2d%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%e3%81%9b%e3%82%88%e3%81%86/" 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 loading="lazy" decoding="async" width="320" height="180" src="https://naiterukaiju.com/wp-content/uploads/2026/06/Unityで2Dアクションゲームを作ろう！-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2026/06/Unityで2Dアクションゲームを作ろう！-320x180.png 320w, https://naiterukaiju.com/wp-content/uploads/2026/06/Unityで2Dアクションゲームを作ろう！-240x135.png 240w, https://naiterukaiju.com/wp-content/uploads/2026/06/Unityで2Dアクションゲームを作ろう！-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity2D】歩行に合わせて背景をスクロールさせてみよう！【初心者向け】</div><div class="blogcard-snippet internal-blogcard-snippet">今回は歩行に合わせて背景画像をスクロールさせる方法 を解説します！背景があるだけでよりゲームらしさがグッと増して、世界観が一気に広がりますよね！ただ背景を用意するだけではプレイヤーが移動した際に背景画像が置いてきぼりになってしまうので、歩行...</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.06.27</div></div></div></div></a>
</div>



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



<p class="wp-block-paragraph">今回は、ビル群の背景制作と背景スクロールの実装を進めました。<br>背景まわりが整ってきたことで、ゲーム全体の雰囲気もかなり見えてきた気がします！</p>



<p class="wp-block-paragraph">かなりスローペースで進めていますが、<br>いずれリリース出来るように引き続きゲーム制作を進めていこうと思います🫡</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/unity-progress-night-city-background/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2026/03/ナイトウォーク-Main-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-03-08-14-22-45-Trim.mp4" length="12043311" type="video/mp4" />

			</item>
		<item>
		<title>【Unity2D】プレイヤーをジャンプさせる方法｜AddForce以外の方法も比較（コード全文・解説付き）</title>
		<link>https://naiterukaiju.com/unity-2d-jump-script/</link>
					<comments>https://naiterukaiju.com/unity-2d-jump-script/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 13:45:11 +0000</pubDate>
				<category><![CDATA[Unity2D実装解説]]></category>
		<category><![CDATA[2Dゲーム]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[Unity初心者]]></category>
		<category><![CDATA[アクションゲーム]]></category>
		<category><![CDATA[ゲーム制作]]></category>
		<category><![CDATA[ジャンプ]]></category>
		<category><![CDATA[ジャンプ処理]]></category>
		<category><![CDATA[地面判定]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=779</guid>

					<description><![CDATA[Unityで2Dアクションゲームを次第に作っていると、プレイヤーをピョンってジャンプさせたくなりますよね。特に横スクロール型の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 class="wp-block-paragraph">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



<p class="wp-block-paragraph">Unityで2Dアクションゲームを次第に作っていると、プレイヤーをピョンってジャンプさせたくなりますよね。<br>特に横スクロール型の2Dゲームではジャンプ処理は必要不可欠ではないでしょうか🤔</p>



<p class="wp-block-paragraph">この記事では、</p>



<ul class="wp-block-list">
<li><strong>ジャンプのさせる方法を知りたい</strong></li>



<li><strong>ジャンプが高くなりすぎる</strong></li>



<li><strong>連続ジャンプしてしまう</strong></li>



<li><strong>地面判定がうまくいかない</strong></li>
</ul>



<p class="wp-block-paragraph">といった方に向けた解説記事となっております！<br><br>また、ただ実装しただけだとジャンプが空中中に無限に出来てしまうので、<br><span class="marker-under-red"><strong>二重ジャンプ防止対策</strong></span>も含めて解説をします！</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Unityの移動処理には<strong>「AddForce・velocity・transform」</strong>の3種類の実装方法がありますが、<br>今回は<strong>重力を活かして自然なジャンプ</strong>にしたいので、<strong>AddForce</strong>を使った実装方法を解説しています。<br>（自作の横スクロール型のアクションゲームでは、<strong>AddForce</strong>で実装するのが一番自然に感じました。）</p>
</blockquote>



<p class="wp-block-paragraph">他の実装方法の解説、比較もしていますので、よければご参照ください！<br></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-14" checked><label class="toc-title" for="toc-checkbox-14">目次</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">① ジャンプ処理の基本コード（全コード）</a></li><li><a href="#toc4" tabindex="0">② 各処理の解説（初心者向け）</a><ol><li><a href="#toc5" tabindex="0">フィールド変数の追加</a></li><li><a href="#toc6" tabindex="0">Start（必要コンポーネントを取得）</a></li><li><a href="#toc7" tabindex="0">Update（接地状態を更新）</a></li><li><a href="#toc8" tabindex="0">_HitFloor (BoxCastで接地判定する)</a></li><li><a href="#toc9" tabindex="0">_OnJump</a></li></ol></li><li><a href="#toc10" tabindex="0">③ Floor レイヤーの作成</a><ol><li><a href="#toc11" tabindex="0">新しいレイヤーを作る</a></li><li><a href="#toc12" tabindex="0">床オブジェクトに Floor レイヤーを割り当てる</a></li><li><a href="#toc13" tabindex="0">Ground MaskにFloorレイヤーを割り当てる</a></li></ol></li><li><a href="#toc14" tabindex="0">④ よくあるエラーと対処法</a><ol><li><a href="#toc15" tabindex="0">❌ 地面にいるのにジャンプできない</a></li><li><a href="#toc16" tabindex="0">❌ 空中で連続ジャンプできる（多段になってしまう）</a></li><li><a href="#toc17" tabindex="0">❌ 斜面や段差で接地判定がガタつく</a></li></ol></li><li><a href="#toc18" tabindex="0">⑤旧Input版（Input.GetKeyDown）での書き方</a></li><li><a href="#toc19" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<ul class="wp-block-list">
<li>Input System を使ってジャンプ操作をさせる</li>



<li><strong>地面にいる時だけジャンプ可能（空中連打で多段ジャンプしない）</strong></li>



<li>Rigidbody2D を使用</li>



<li>接地判定は BoxCast で足元をチェックを行います</li>
</ul>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2026/03/サンプルゲーム-SampleScene-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-03-01-19-13-41-Trim.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">事前準備しておくこと</span></h2>



<ul class="wp-block-list">
<li>Unity 2021.3以降推奨</li>



<li>Input Systemパッケージが導入済みであること</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Input Systemでボタン操作を設定している前提で進めています。<br>Input Systemの導入がまだ出来ていない場合は、<strong><span class="marker-under-red">⑤での旧Input版の実装方法でも実装が可能です。</span></strong></p>
</blockquote>



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



<h2 class="wp-block-heading"><span id="toc3">① ジャンプ処理の基本コード（全コード）</span></h2>



<p class="wp-block-paragraph"><code>Input System</code> の Jump を呼ぶ前提で <code>_OnJump()</code> を用意しています。<br>（※旧Input（Input.GetKeyDown）版も⑤で紹介しています。）</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
{   
    &#91;SerializeField, Header("ジャンプ速度")&#93;
    private float _jumpSpeed;
    
    &#91;SerializeField, Header("接地判定用レイヤー(Floorなど)")&#93;
    private LayerMask _groundMask;   // インスペクターでFloorを指定

    private bool _bJump;
    private Collider2D _col;         // 実寸取得用
    
    void Start()
    {
        _col = GetComponent&lt;Collider2D>();
        _bJump = false;
    }
    
    void Update()
    {
        _HitFloor();
    }
    
    // 今床に触れているか、空中状態か判定する
    private void _HitFloor()
    {
        // もしプレイヤーのColliderが存在しなければ処理しない
        if (_col == null) return;

        // 接地判定のためのBoxCast（四角形の当たり判定を下に飛ばす）を準備する

        // プレイヤーのコライダーの範囲を取得
        Bounds b = _col.bounds;
        // 判定を出す位置（プレイヤーの足元より少し下に設定）
        Vector2 center = new Vector2(b.center.x, b.min.y - 0.05f);
        // 判定の大きさ（横幅はキャラより少し小さめ、高さはごく薄い矩形）
        Vector2 size = new Vector2(b.size.x * 0.9f, 0.12f);

        // BoxCastを実行
        // ・center：判定の中心位置
        // ・size  ：判定の大きさ
        // ・0f    ：角度は回転なし
        // ・Vector2.down：真下に向けて判定
        // ・0.05f ：判定を飛ばす長さ（わずかに下へ伸ばす）
        // ・_groundMask：Floorなど「地面」とするレイヤーにだけ反応させる
        RaycastHit2D hit = Physics2D.BoxCast(center, size, 0f, Vector2.down, 0.05f, _groundMask);

        // 当たり判定の情報取得
        bool grounded = (hit.collider != null);

        // 地面と触れたか確認
        if (grounded)
        {
            // 地面にいる → ジャンプ可能
            _bJump = false;
        }
        else
        {
            // 空中にいる → ジャンプ不可
            _bJump = true;
        }
    }
    // ジャンプ処理
    public void _OnJump(InputAction.CallbackContext context)
    {
        // 押下(performed)でなければ無視 / 空中なら無視
        if (!context.performed || _bJump) return;

        // Impulse:初速が早く徐々に減速、Force:初速が遅く、徐々に加速
        _rigid.AddForce(Vector2.up * _jumpSpeed, ForceMode2D.Impulse);

        // 連打での多段を防ぐために即座に空中扱い
        _bJump = 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">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;ジャンプ速度&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">float</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_jumpSpeed</span><span style="color: #D4D4D4">;</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;接地判定用レイヤー(Floorなど)&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">LayerMask</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_groundMask</span><span style="color: #D4D4D4">;   </span><span style="color: #6A9955">// インスペクターでFloorを指定</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">_bJump</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">Collider2D</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_col</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: #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">_col</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">Collider2D</span><span style="color: #D4D4D4">&gt;();</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_bJump</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: #DCDCAA">_HitFloor</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">_HitFloor</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">// もしプレイヤーのColliderが存在しなければ処理しない</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: #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: #6A9955">// 接地判定のためのBoxCast（四角形の当たり判定を下に飛ばす）を準備する</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">Bounds</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">b</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_col</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">bounds</span><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">Vector2</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">center</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector2</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">b</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">center</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">b</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">min</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> - 0.05</span><span style="color: #9CDCFE">f</span><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">Vector2</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">size</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector2</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">b</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">size</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4"> * 0.9</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">, 0.12</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: #6A9955">// BoxCastを実行</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// ・center：判定の中心位置</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// ・size  ：判定の大きさ</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// ・0f    ：角度は回転なし</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// ・Vector2.down：真下に向けて判定</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// ・0.05f ：判定を飛ばす長さ（わずかに下へ伸ばす）</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// ・_groundMask：Floorなど「地面」とするレイヤーにだけ反応させる</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">RaycastHit2D</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">hit</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Physics2D</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">BoxCast</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">center</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">size</span><span style="color: #D4D4D4">, 0</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">Vector2</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">down</span><span style="color: #D4D4D4">, 0.05</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">_groundMask</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">bool</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">grounded</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">hit</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">collider</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</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">grounded</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">_bJump</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 style="color: #C586C0">else</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">_bJump</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">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">_OnJump</span><span style="color: #D4D4D4">(InputAction.CallbackContext </span><span style="color: #9CDCFE">context</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">// 押下(performed)でなければ無視 / 空中なら無視</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">context</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">performed</span><span style="color: #D4D4D4"> || </span><span style="color: #9CDCFE">_bJump</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: #6A9955">// Impulse:初速が早く徐々に減速、Force:初速が遅く、徐々に加速</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">_rigid</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">AddForce</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">Vector2</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">up</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">_jumpSpeed</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">ForceMode2D</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Impulse</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">_bJump</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></code></pre></div>



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



<h2 class="wp-block-heading"><span id="toc4">② 各処理の解説（初心者向け）</span></h2>



<p class="wp-block-paragraph">↓※以下は各処理の説明です。わかってるよという方は③まで読み飛ばしてください！</p>



<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, Header("ジャンプ速度")&#93;
    private float _jumpSpeed;
    
    &#91;SerializeField, Header("接地判定用レイヤー(Floorなど)")&#93;
    private LayerMask _groundMask;   // インスペクターでFloorを指定

    private bool _bJump;
    private Collider2D _col;         // 実寸取得用
</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">, </span><span style="color: #DCDCAA">Header</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;ジャンプ速度&quot;</span><span style="color: #D4D4D4">)&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">    </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">_jumpSpeed</span><span style="color: #D4D4D4">;</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;接地判定用レイヤー(Floorなど)&quot;</span><span style="color: #D4D4D4">)&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">LayerMask</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_groundMask</span><span style="color: #D4D4D4">;   </span><span style="color: #6A9955">// インスペクターでFloorを指定</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><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">_bJump</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Collider2D</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_col</span><span style="color: #D4D4D4">;         </span><span style="color: #6A9955">// 実寸取得用</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph"><code>_jumpSpeed</code>：ジャンプの強さ（大きいほど高く跳ぶ）。<strong>インスペクターで強さを調整します。</strong>（15くらいがおすすめ）<br><code>_groundMask</code>：<strong>「床」と判定するレイヤー</strong>を指定します。（Floorなど）<strong>インスペクターで <code>Floor</code> レイヤーを選びます。</strong></p>



<p class="wp-block-paragraph">✅ Tag判定でも同じことが出来ますが、今回はLayerMaskで進めています。<br>LayerMaskは<strong>「物理判定の対象を限定するための仕組み」</strong>で今回のような<strong>地面だけ判定</strong>するような接地判定に向いています。</p>



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



<h3 class="wp-block-heading"><span id="toc6">Start（必要コンポーネントを取得）</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>void Start()
{
    _col   = GetComponent&lt;Collider2D>();
    _bJump = 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: #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">_col</span><span style="color: #D4D4D4">   = </span><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">Collider2D</span><span style="color: #D4D4D4">&gt;();</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">_bJump</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>



<ul class="wp-block-list">
<li><strong><code>Collider2D</code> （プレイヤー自身に付いている当たり判定情報）を取得</strong>して変数に保存。</li>



<li><code>_bJump</code> は「今ジャンプ中かどうか」を管理するフラグです。初期値は <code>false</code>（ジャンプ可能）。</li>
</ul>



<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>void Update()
{
    _HitFloor();       // 接地状態をチェック
}
</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">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: #DCDCAA">_HitFloor</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></code></pre></div>



<p class="wp-block-paragraph">Updateは毎フレーム呼び出されるUnityの共通機能です。<br>ここで <code>_HitFloor()</code> を呼び出して、接地中かどうかを更新します。</p>



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



<h3 class="wp-block-heading"><span id="toc8">_HitFloor (BoxCastで接地判定する)</span></h3>



<h5 class="wp-block-heading">Colliderが存在するか確認</h5>



<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 (_col == null) 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">_col</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></code></pre></div>



<p class="wp-block-paragraph">ここでは<br><strong>プレイヤーのColliderが取得できているか</strong>を確認しています。</p>



<p class="wp-block-paragraph">もしColliderが存在しない状態で処理を続けると<br>エラーが発生してしまうため、Colliderが無い場合 処理を中断するという安全対策です。</p>



<h5 class="wp-block-heading">プレイヤーの当たり判定サイズを取得</h5>



<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>Bounds b = _col.bounds;</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">Bounds</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">b</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">_col</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">bounds</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p class="wp-block-paragraph">ここでは<br>**プレイヤーのコライダーの範囲（サイズ・位置）**を取得しています。</p>



<p class="wp-block-paragraph"><code>Bounds</code>には次のような情報が入っています。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>情報</th><th>内容</th></tr></thead><tbody><tr><td>center</td><td>コライダーの中心</td></tr><tr><td>min</td><td>コライダーの一番下</td></tr><tr><td>size</td><td>コライダーのサイズ</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">つまりプレイヤーの大きさ、プレイヤーの位置を取得しています。</p>



<h5 class="wp-block-heading">接地判定の中心位置を決める</h5>



<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>Vector2 center = new Vector2(b.center.x, b.min.y - 0.05f);</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">Vector2</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">center</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector2</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">b</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">center</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">b</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">min</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> - 0.05</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">);</span></span></code></pre></div>



<p class="wp-block-paragraph">ここでは<br><strong>地面を判定する位置</strong>を決めています。</p>



<p class="wp-block-paragraph">ポイントはここです。<br><strong>b.min.y</strong></p>



<p class="wp-block-paragraph">これは、<strong><span class="marker-under-red">プレイヤーコライダーの一番下の位置</span></strong>です。<br>さらに<strong>-0.05</strong>fをしている理由は<strong><span class="marker-under-red">プレイヤーの足元より少し下で判定するため</span></strong>です。</p>



<pre class="wp-block-preformatted">   プレイヤー<br>   ┌─────┐<br>   │     │<br>   │     │<br>   └─────┘ ←ここがb.min.y   □ ←この少し下で接地判定<br>────────── 地面</pre>



<p class="wp-block-paragraph">こうすることで<br><strong>足元に地面があるかを正確に判定できます</strong>！</p>



<h5 class="wp-block-heading">判定する矩形サイズを決める</h5>



<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>Vector2 size = new Vector2(b.size.x * 0.9f, 0.12f);</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">Vector2</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">size</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector2</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">b</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">size</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4"> * 0.9</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">, 0.12</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">);</span></span></code></pre></div>



<p class="wp-block-paragraph">ここでは<strong>BoxCastのサイズ</strong>を設定しています。<br><strong>b.size.x * 0.9f（横幅）</strong>で、プレイヤーの幅より<strong>少しだけ小さくしています。</strong><br>理由は、<strong>壁に触れたときに地面と誤判定しないようにするため</strong>です。</p>



<p class="wp-block-paragraph"><strong>0.12f（高さ）</strong>は<strong>かなり薄くしています。</strong><br>これは、<strong>足元のわずかな範囲だけを判定するためです。</strong></p>



<h5 class="wp-block-heading"> BoxCastで地面をチェック</h5>



<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>RaycastHit2D hit = Physics2D.BoxCast(
    center,
    size,
    0f,
    Vector2.down,
    0.05f,
    _groundMask
);</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">RaycastHit2D</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">hit</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Physics2D</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">BoxCast</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">center</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">size</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    0</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">Vector2</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">down</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    0.05</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">_groundMask</span></span>
<span class="line"><span style="color: #D4D4D4">);</span></span></code></pre></div>



<p class="wp-block-paragraph">ここが <strong>この処理の一番重要な部分</strong>です。<br>BoxCastとは<strong><span class="marker-under-red">四角形を飛ばして当たり判定をチェックする機能</span></strong>です。</p>



<p class="wp-block-paragraph">【<strong>イメージ</strong>】</p>



<pre class="wp-block-preformatted">プレイヤー<br>  │<br>  ▼[ □ ] ←判定ボックス<br>  │<br>  ▼<br>地面</pre>



<p class="wp-block-paragraph">各引数の意味はこちら。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>引数</th><th>意味</th></tr></thead><tbody><tr><td>center</td><td>判定の中心</td></tr><tr><td>size</td><td>判定の大きさ</td></tr><tr><td>0f</td><td>回転なし</td></tr><tr><td>Vector2.down</td><td>下方向に判定</td></tr><tr><td>0.05f</td><td>飛ばす距離</td></tr><tr><td>_groundMask</td><td>地面レイヤーだけ判定</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph"><strong>BoxCast</strong>の他にも<strong>、</strong>Unityにはいくつかの判定方法があります。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>方法</th><th>形</th><th>用途</th></tr></thead><tbody><tr><td>Raycast</td><td>線</td><td>足元・視線判定</td></tr><tr><td>CircleCast</td><td>円</td><td>丸いキャラ向き</td></tr><tr><td><strong>BoxCast</strong></td><td>四角形</td><td>2Dキャラの接地判定に最適</td></tr></tbody></table></figure>



<h5 class="wp-block-heading">なぜジャンプ判定でBoxCastを使うのか？</h5>



<p class="wp-block-paragraph">プレイヤーは四角いことが多いですよね。</p>



<pre class="wp-block-preformatted">  □ ← プレイヤー<br>￣￣￣￣ ← 床</pre>



<p class="wp-block-paragraph">Raycast（線）だと、</p>



<pre class="wp-block-preformatted">  □<br>　 |<br>   |<br> <br>￣￣￣￣</pre>



<p class="wp-block-paragraph">→ ちょっとズレると判定ミスします。</p>



<p class="wp-block-paragraph">でも BoxCast なら：</p>



<pre class="wp-block-preformatted"> □<br> ███ ← 薄い箱<br>￣￣￣￣</pre>



<p class="wp-block-paragraph">足元全体をチェックできるので安定しやすくなります🚶</p>



<h5 class="wp-block-heading">地面に当たったか確認</h5>



<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>bool grounded = (hit.collider != null);</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">bool</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">grounded</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">hit</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">collider</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">);</span></span></code></pre></div>



<p class="wp-block-paragraph">BoxCastが</p>



<ul class="wp-block-list">
<li>地面に当たった → colliderが存在</li>



<li>当たってない → null</li>
</ul>



<p class="wp-block-paragraph">になります。<br>つまり <strong>hit.collider != null</strong>は、<strong>地面に触れているかどうか</strong>を意味しています。</p>



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



<h5 class="wp-block-heading">ジャンプ可能かどうかを設定</h5>



<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 (grounded)
{
    _bJump = false;
}
else
{
    _bJump = true;
}

bool grounded = (hit.collider != null);bool grounded = (hit.collider != null);</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">grounded</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">_bJump</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: #C586C0">else</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">_bJump</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>
<span class="line"><span style="color: #9CDCFE">bool</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">grounded</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">hit</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">collider</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">);</span><span style="color: #9CDCFE">bool</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">grounded</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">hit</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">collider</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">);</span></span></code></pre></div>



<p class="wp-block-paragraph">ここでは、</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>状態</th><th>処理</th></tr></thead><tbody><tr><td>地面にいる</td><td>ジャンプ可能</td></tr><tr><td>空中</td><td>ジャンプ不可</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">という状態を設定しています。</p>



<p class="wp-block-paragraph">この <code>_bJump</code> をジャンプ処理で使います。</p>



<h3 class="wp-block-heading"><span id="toc9">_OnJump</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 _OnJump(InputAction.CallbackContext context)
{
    // 入力が押された瞬間以外は無視 / 空中中は無視
    if (!context.performed || _bJump) return;

    // Rigidbodyに上方向の力を加える
    _rigid.AddForce(Vector2.up * _jumpSpeed, ForceMode2D.Impulse);

    // ジャンプ直後は空中扱いにして多段ジャンプを防ぐ
    _bJump = 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">_OnJump</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">InputAction</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">CallbackContext</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">context</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">context</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">performed</span><span style="color: #D4D4D4"> || </span><span style="color: #9CDCFE">_bJump</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: #6A9955">// Rigidbodyに上方向の力を加える</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">_rigid</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">AddForce</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">Vector2</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">up</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">_jumpSpeed</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">ForceMode2D</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Impulse</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">_bJump</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><code>context.performed</code> … 入力が「押された瞬間」だけ反応します。</li>



<li><code>_bJump</code> が <code>true</code> のとき（空中）は処理をスキップ。</li>



<li>ジャンプ処理にはいくつかの実装方法がありますが、<code><strong>AddForce</strong></code>（Rigidbodyに力を加える関数）を使う理由は<strong>物理挙動を活かして自然なジャンプ</strong>にするためです。<br>上方向（Y軸プラス方向）に対しジャンプの強さ（高さ）を図り、<strong>ForceMode2D.Impulse</strong>を引数で渡すことで、<strong>一瞬だけ強い力を加える</strong>ことができます。<br>こうすることで、<strong>初速を一気に与えて自然なジャンプ挙動になります。</strong></li>
</ul>



<p class="wp-block-paragraph"><strong>AddForce</strong>は重力と組み合わさることで、<br>上昇→減速→落下の自然なカーブを描きます。<br>そのため、より気持ちのいいジャンプになります！<br><strong><span class="marker-under-red">今回のようなアクションゲームならAddForceがおすすめです！</span></strong></p>



<p class="wp-block-paragraph">⬇️他にも、AddForce以外には以下のような方法があります。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>方法</th><th>特徴</th><th>物理挙動</th><th>主な用途</th></tr></thead><tbody><tr><td>_rigid.AddForce</td><td>力を加える</td><td>◎（自然）</td><td>ジャンプ・吹っ飛び</td></tr><tr><td>_rigid.velocity</td><td>速度を直接指定</td><td>○（やや物理）</td><td>移動、定速移動</td></tr><tr><td>transform</td><td>位置を直接変更</td><td>✕（物理なし）</td><td>UI・演出・単純移動</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">velocityでジャンプさせる方法（速度を直接指定）</h4>



<p class="wp-block-paragraph">速度を直接指定でき、瞬時に移動させることが出来るのが特徴です。</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>_rigid.velocity = new Vector2(_rigid.velocity.x, _jumpSpeed);</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">_rigid</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">velocity</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Vector2</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_rigid</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">velocity</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">_jumpSpeed</span><span style="color: #D4D4D4">);</span></span></code></pre></div>



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



<p class="wp-block-paragraph"><strong>メリット</strong>・・・操作が安定する（毎回同じ動き）、細かい制御がしやすい横移動との相性が良い<br><strong>デメリット</strong>・・・物理感は少し薄れる、慣性が消える（急に止まる）</p>



<p class="wp-block-paragraph">向いている用途は、<strong>プレイヤーの左右移動、シンプルなジャンプ制御、アクションゲーム全般</strong>です。</p>



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



<h4 class="wp-block-heading"> transformでジャンプさせる方法（位置を直接変更）</h4>



<p class="wp-block-paragraph">Rigidbodyを使用せず、位置を直接変更する方法です。</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>transform.position += Vector3.up * 5f;</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">transform</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">position</span><span style="color: #D4D4D4"> += </span><span style="color: #9CDCFE">Vector3</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">up</span><span style="color: #D4D4D4"> * 5</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p class="wp-block-paragraph"><strong>メリット</strong>・・・シンプルで分かりやすい、Rigidbody不要、軽い<br><strong>デメリット</strong>・・・当たり判定が壊れやすい、物理エンジン無視、壁すり抜けなどが起きる</p>



<p class="wp-block-paragraph">向いている用途は、<strong>UI、カメラ移動、背景スクロール</strong>、<strong>演出効果</strong>などです。</p>



<h2 class="wp-block-heading"><span id="toc10">③ Floor レイヤーの作成</span></h2>



<p class="wp-block-paragraph"><strong>「床」</strong>と判定する<code>Floor</code> レイヤーを追加します。</p>



<h3 class="wp-block-heading"><span id="toc11">新しいレイヤーを作る</span></h3>



<p class="wp-block-paragraph">１．どのオブジェクトでもいいのでクリックし、「Inspector」ウィンドウを確認<br>２．「Layer」の右端にあるプルダウンをクリック<br>３．  一番下の 「Add Layer…」 を選びます。<br>　（インスペクターが Tags &amp; Layers の設定画面に切り替わります。）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="764" src="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113346-1024x764.png" alt="レイヤーの設定方法" class="wp-image-218" srcset="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113346-1024x764.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113346-300x224.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113346-768x573.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113346.png 1240w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">４．その空欄に <strong><code>Floor</code></strong> と入力してください！<br>（大文字・小文字は区別されないですが、コードと統一した方が安全です）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="830" height="617" src="https://naiterukaiju.com/wp-content/uploads/2026/03/image-15-edited.png" alt="レイヤーの追加方法" class="wp-image-991" srcset="https://naiterukaiju.com/wp-content/uploads/2026/03/image-15-edited.png 830w, https://naiterukaiju.com/wp-content/uploads/2026/03/image-15-edited-300x223.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/03/image-15-edited-768x571.png 768w" sizes="(max-width: 830px) 100vw, 830px" /></figure>



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



<h3 class="wp-block-heading"><span id="toc12">床オブジェクトに Floor レイヤーを割り当てる</span></h3>



<ul class="wp-block-list">
<li>Hierarchy 上で「床」となるオブジェクトを選択。</li>



<li>Inspector の <strong>Layer</strong> プルダウンから、先ほど作成した <strong>Floor</strong> を選びます。</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="470" height="223" src="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113604.png" alt="Floor レイヤーを割り当てている様子" class="wp-image-220" srcset="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113604.png 470w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113604-300x142.png 300w" sizes="(max-width: 470px) 100vw, 470px" /></figure>



<h3 class="wp-block-heading"><span id="toc13">Ground MaskにFloorレイヤーを割り当てる</span></h3>



<ul class="wp-block-list">
<li>Playerオブジェクトを選択</li>



<li>Ground Maskに今作成した <strong>Floor</strong> を選びます。</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="762" src="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113446-1-1024x762.png" alt="Ground MaskにFloorレイヤーを割り当てている様子" class="wp-image-221" srcset="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113446-1-1024x762.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113446-1-300x223.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113446-1-768x572.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-27-113446-1.png 1241w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<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 class="wp-block-paragraph">ここまで設定したらジャンプ処理の完成です！</p>
</div></div>



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



<h2 class="wp-block-heading"><span id="toc14">④ よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">↓ジャンプが動かない、挙動が変な場合は以下を確認してみてください！</p>



<h3 class="wp-block-heading"><span id="toc15">❌ 地面にいるのにジャンプできない</span></h3>



<ul class="wp-block-list">
<li>床オブジェクトのLayerMaskが設定されていない
<ul class="wp-block-list">
<li>✅Layer：「Floor」を設定する</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="710" height="107" src="https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1.png" alt="「Floor」を設定する方法" class="wp-image-987" srcset="https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1.png 710w, https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1-300x45.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<ul class="wp-block-list">
<li>プレイヤー側の「床」と判定するレイヤー（<code>_groundMask</code> ）の指定がされていない
<ul class="wp-block-list">
<li>✅GroundMask：「Floor」を設定する</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="710" height="252" src="https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1-1.png" alt="GroundMask：「Floor」を設定する方法" class="wp-image-988" srcset="https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1-1.png 710w, https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！のコピーのコピー-1-1-300x106.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="toc16">❌ 空中で連続ジャンプできる（多段になってしまう）</span></h3>



<ul class="wp-block-list">
<li><code>_HitFloor()</code> が呼ばれていない/判定が機能していない</li>



<li>ジャンプ後 <code>_bJump = true;</code> を入れていない</li>
</ul>



<p class="wp-block-paragraph">✅ 対処：<code>_OnJump</code> の最後で <code>_bJump = true;</code> を必ず入れる</p>



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



<h3 class="wp-block-heading"><span id="toc17">❌ 斜面や段差で接地判定がガタつく</span></h3>



<ul class="wp-block-list">
<li>sizeが薄すぎる/小さすぎる</li>



<li>distanceが短すぎる</li>
</ul>



<p class="wp-block-paragraph">✅ 対処：<code>size.y</code> や <code>0.05f</code> を少し増やす（例：0.08f、0.1f）</p>



<h2 class="wp-block-heading"><span id="toc18">⑤旧Input版（Input.GetKeyDown）での書き方</span></h2>



<p class="wp-block-paragraph">Input Systemを使っていない場合は、Updateでこう書けばOKです🙆<br>これだけで、スペースキーが押されたらジャンプするようなります！</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>if (Input.GetKeyDown(KeyCode.Space) &amp;&amp; !_bJump)
{
    _rigid.AddForce(Vector2.up * _jumpSpeed, ForceMode2D.Impulse);
    _bJump = 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">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">) &amp;&amp; !</span><span style="color: #9CDCFE">_bJump</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">_rigid</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">AddForce</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">Vector2</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">up</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">_jumpSpeed</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">ForceMode2D</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Impulse</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">_bJump</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></code></pre></div>



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



<p class="wp-block-paragraph">今回の処理は次の流れになっています。</p>



<p class="wp-block-paragraph">① プレイヤーのコライダー情報を取得<br>② 足元の位置を計算<br>③ 小さい矩形を作る<br>④ BoxCastで下方向に判定<br>⑤ 地面に当たったか確認<br>⑥ ジャンプ可能か設定</p>



<p class="wp-block-paragraph">この処理によって</p>



<ul class="wp-block-list">
<li>空中ジャンプ防止</li>



<li>正確な接地判定</li>
</ul>



<p class="wp-block-paragraph">が実現できます！！</p>



<p class="wp-block-paragraph">今回は、Unity2Dでのジャンプ実装方法を解説しました。</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 class="wp-block-paragraph">最後まで読んでいただきありがとうございました！</p>
</div></div>



<p class="wp-block-paragraph">他にも、<br><strong>「プレイヤーを追従させるカメラワークを作りたい」<br>「歩行やジャンプ時にアニメーションをつけたい」</strong><br>という実装したい人は、こちらの記事もご興味あれば覗いてみてください👾</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e3%83%97%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e3%82%92%e8%bf%bd%e5%be%93%e3%81%95%e3%81%9b%e3%82%8b%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%ae%e5%ae%9f%e8%a3%85%e6%96%b9%e6%b3%95/" title="【Unity2D】プレイヤーを追従させるカメラを作るには？｜実装方法（コード全文・解説付き）" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/3ef8e13d029d5d61f7eb937fbb1399e7.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】プレイヤーを追従させるカメラを作るには？｜実装方法（コード全文・解説付き）</div><div class="blogcard-snippet external-blogcard-snippet">Unityで2Dアクションゲームを作っていると、「プレイヤーの歩行に合わせてカメラも追従させたい」「プレイヤーを歩かせてもカメラが追従しない」「カメラ追従させたが画面がガタつく・・・」「横だけ追従したい」といったことありますよね🤔この記事で...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e3%83%97%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e3%82%92%e8%bf%bd%e5%be%93%e3%81%95%e3%81%9b%e3%82%8b%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%ae%e5%ae%9f%e8%a3%85%e6%96%b9%e6%b3%95/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



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

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e3%80%91%e6%ad%a9%e8%a1%8c%e6%99%82%e3%82%a2%e3%83%8b%e3%83%a1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%ef%bc%882d%ef%bc%89%ef%bd%9canim/" title="【Unity2D】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/26bd1bed9aae0178a08aae993751ecbe.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう</div><div class="blogcard-snippet external-blogcard-snippet">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖今回は 2Dキャラの「歩行」時のアニメーションを を Unity で作る方法を解説します！手順としては、待機、歩行用の画像を用意するAnimation Clip（歩くアニメ）を作成す...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e3%80%91%e6%ad%a9%e8%a1%8c%e6%99%82%e3%82%a2%e3%83%8b%e3%83%a1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%ef%bc%882d%ef%bc%89%ef%bd%9canim/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/unity-2d-jump-script/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2026/03/サンプルゲーム-SampleScene-Windows-Mac-Linux-Unity-2021.3.6f1-Personal-_DX11_-2026-03-01-19-13-41-Trim.mp4" length="10172130" type="video/mp4" />

			</item>
		<item>
		<title>【Unity2D】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう【初心者向け】</title>
		<link>https://naiterukaiju.com/unity-2d-walk-animation/</link>
					<comments>https://naiterukaiju.com/unity-2d-walk-animation/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sun, 08 Feb 2026 08:04:10 +0000</pubDate>
				<category><![CDATA[Unity2D実装解説]]></category>
		<category><![CDATA[2Dゲーム]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[animator]]></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=664</guid>

					<description><![CDATA[今回は Unityで、「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 class="wp-block-paragraph">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



<p class="wp-block-paragraph">今回は Unityで、<br><strong><span class="marker-under-red">「2Dキャラの「歩行」時のアニメーション」</span></strong>を作る方法を解説します！<br><br>具体的には、<br><strong>歩いているとき⇒歩行アニメーション、<br>止まっているとき⇒歩行アニメーションを停止</strong><br>というイメージでアニメーションを切り替えて作っていきます🦖</p>



<p class="wp-block-paragraph">手順としては、</p>



<ul class="wp-block-list">
<li>待機、歩行用の画像を用意する</li>



<li>Animation Clip（歩くアニメ）を作成する</li>



<li>Animator で <strong>待機(Idle)⇔歩行(Walk)</strong> を条件で切り替える設定をする</li>



<li>スクリプトにアニメーションを切り替える処理を作成する</li>
</ul>



<p class="wp-block-paragraph">という流れです。</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 class="wp-block-paragraph">↓画像を元に作ったGIFアニメーションです！2枚の画像だけでそれっぽく見せています</p>
</div></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="100" height="200" src="https://naiterukaiju.com/wp-content/uploads/2026/02/rinta.gif" alt="" class="wp-image-717"/></figure>



<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-16" checked><label class="toc-title" for="toc-checkbox-16">目次</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">②AnimationControllerを作成する</a></li><li><a href="#toc4" tabindex="0">③Animator に Idle / Walk を配置する</a></li><li><a href="#toc5" tabindex="0">④アニメーションを作る</a><ol><li><a href="#toc6" tabindex="0">歩行アニメーションを作る</a></li></ol></li><li><a href="#toc7" tabindex="0">⑤アニメーション切り替え設定</a><ol><li><a href="#toc8" tabindex="0"> パラメータを作成</a></li><li><a href="#toc9" tabindex="0">遷移（Transition）を設定</a></li></ol></li><li><a href="#toc10" tabindex="0">⑥切り替える処理をつくる</a><ol><li><a href="#toc11" tabindex="0">各処理の説明</a></li><li><a href="#toc12" tabindex="0">Animator側ではこうなっています</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>



<p class="wp-block-paragraph">「歩行」アニメーション画像を用意します。（最低でも2枚は用意）<br>ここでは、筆者が作成した画像を使用します。<br>（画像がない方は、以下のアセットを使用することもできます↓）</p>


<a rel="noopener" href="https://assetstore.unity.com/packages/2d/characters/simple-2d-platformer-assets-pack-188518#description" title="Simple 2D Platformer Assets Pack | 2D Characters | Unity Asset Store" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/92a59d9c0b0d34480303391a8ee12da1.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Simple 2D Platformer Assets Pack | 2D Characters | Unity Asset Store</div><div class="blogcard-snippet external-blogcard-snippet">Elevate your workflow with the Simple 2D Platformer Assets Pack asset from Goldmetal. Find this &amp; more Characters on the&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://assetstore.unity.com/packages/2d/characters/simple-2d-platformer-assets-pack-188518#description" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">assetstore.unity.com</div></div></div></div></a>


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



<h2 class="wp-block-heading"><span id="toc2">①歩行アニメーションを作る</span></h2>



<p class="wp-block-paragraph">まず初めに<strong>Animation Clip</strong>を作成します。<br><strong>Animation Clip</strong>とは、<strong>具体的な動きのデータを保存したアセットファイル</strong>のことです。<br>（拡張子.animが付きます。）</p>



<p class="wp-block-paragraph">１．ProjectタブのAssertフォルダを選択し、「Animation」フォルダを作成する<br>２．「Animation」フォルダを選択し右クリックで<strong>Create &gt; Animation </strong>ボタンを押す</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="549" height="622" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-25-2.png" alt="Animationの追加" class="wp-image-668" style="width:549px;height:auto" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-25-2.png 549w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-25-2-265x300.png 265w" sizes="(max-width: 549px) 100vw, 549px" /></figure>



<p class="wp-block-paragraph">３．ファイル名を 「<code>Walk</code>」 にして保存する</p>



<ul class="wp-block-list">
<li>inspector
<ul class="wp-block-list">
<li>Loop Time：✅をつける（アニメーションがループで再生されるようになります）</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">４．同様に、<strong><span class="marker-under-blue">「Idle」アニメーションも作っておきます</span><span class="marker-under-blue">。</span></strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="499" src="https://naiterukaiju.com/wp-content/uploads/2026/02/image-3-1024x499.png" alt="Animation追加後の画面状態" class="wp-image-682" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/image-3-1024x499.png 1024w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-3-300x146.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-3-768x374.png 768w, https://naiterukaiju.com/wp-content/uploads/2026/02/image-3.png 1155w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



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



<h2 class="wp-block-heading"><span id="toc3">②AnimationControllerを作成する</span></h2>



<p class="wp-block-paragraph">次に、アニメーションの切り替えを管理する<strong>「AnimationController」</strong>を作成します！<br><strong>AnimationController</strong>を作成したら、Playerオブジェクトと紐づけるようにします。</p>



<p class="wp-block-paragraph">１．「Animation」フォルダを選択し右クリックで<strong>Create &gt; AnimationController </strong>ボタンを押す</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="662" height="535" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-29.png" alt="AnimationControllerの追加" class="wp-image-675" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-29.png 662w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-29-300x242.png 300w" sizes="(max-width: 662px) 100vw, 662px" /></figure>



<p class="wp-block-paragraph">２．ファイル名を 「Player」 にして保存します</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="622" height="492" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-32.png" alt="AnimationController追加後の画面" class="wp-image-684" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-32.png 622w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-32-300x237.png 300w" sizes="(max-width: 622px) 100vw, 622px" /></figure>



<p class="wp-block-paragraph"><br>３．<strong>Playerオブジェクト</strong>を選択し、<strong>AddComponent</strong>で以下を追加します</p>



<ul class="wp-block-list">
<li><strong>Animator</strong></li>
</ul>



<p class="wp-block-paragraph">４．2で作成した<strong>AnimationController</strong>を<strong><span class="marker-under-blue">Player側のController設定にドラッグ＆ドロップします</span></strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="687" height="504" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-31.png" alt="AnimationControllerをドラッグ＆ドロップ" class="wp-image-679" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-31.png 687w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-31-300x220.png 300w" sizes="(max-width: 687px) 100vw, 687px" /></figure>



<p class="wp-block-paragraph"></p>



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



<h2 class="wp-block-heading"><span id="toc4">③Animator に Idle / Walk を配置する</span></h2>



<p class="wp-block-paragraph">作成したAnimation Clip（歩行、待機アニメ）を、使用するためにAnimatorに配置していきます。<br>Animatorとは、<strong>オブジェクトを動かす実体（司令塔のようなもの）</strong>です。<br>②で作ったAnimator Controllerを読み込み、最終的にアニメーションを再生する役割をしています！</p>



<ol class="wp-block-list">
<li><strong>AnimationController</strong>をダブルクリックし、<code>Animator</code> ウィンドウを開く</li>



<li>  <code>Animator</code> ウィンドウに「Walk」、「Idel」をドラッグして配置する</li>



<li>Idle を右クリック → <strong>Set as Layer Default State</strong>（最初は待機にする）
<ul class="wp-block-list">
<li>「Entry」⇒「Idle」に紐づくようになります</li>



<li>「Entry」は<strong>ゲーム起動時に再生されるアニメーション</strong>です</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="778" height="558" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-34.png" alt="Animator に Idle / Walk を配置する" class="wp-image-686" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-34.png 778w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-34-300x215.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-34-768x551.png 768w" sizes="(max-width: 778px) 100vw, 778px" /></figure>



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



<h2 class="wp-block-heading"><span id="toc5">④アニメーションを作る</span></h2>



<p class="wp-block-paragraph">ここで実際に動くアニメーションを作成していきます！</p>



<h3 class="wp-block-heading"><span id="toc6">歩行アニメーションを作る</span></h3>



<ol class="wp-block-list">
<li><strong><code>Walk.anim</code> </strong> をダブルクリックする（Animationウィンドウが開きます）</li>



<li>プレイヤーオブジェクトを選択する（<strong>※プレイヤーを選択しないと３で上手くいかないので注意</strong>！）</li>



<li>歩行用の画像をを Animationウィンドウに<strong>ドラッグ＆ドロップ</strong>して配置します</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="622" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-42.png" alt="歩行アニメーションを作る" class="wp-image-699" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-42.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-42-300x187.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-42-768x478.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">これでタイムラインに画像が並び、歩行アニメが完成します！🚶<br>▶ボタンを押すと再生速度を確認できます。<br>（当記事では２コマで作成していますが、もっと画像を増やしても大丈夫です🙆）</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">今回は歩行アニメーションのみ作っていますが、<strong><code>Idol.anim</code></strong><code>にも同様にアニメーションを作ることでより本格的な仕上がりにできます</code></p>
</blockquote>



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



<h2 class="wp-block-heading"><span id="toc7">⑤アニメーション切り替え設定</span></h2>



<p class="wp-block-paragraph">次に、<br><strong>「止まっている時はidol、動いたらWalk」</strong><br>という切り替えを作ります！</p>



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



<h3 class="wp-block-heading"><span id="toc8"> パラメータを作成</span></h3>



<p class="wp-block-paragraph">アニメーションを切り替えるためのパラメータ（フラグ）を追加します。<br><strong>AnimationController</strong>を再度開き、Animatorの＋ボタンで「<strong>Bool</strong>」を追加します。<br>名前は<strong>「Walk」</strong>にします。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="202" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-36.png" alt="「Bool」を追加" class="wp-image-691" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-36.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-36-300x61.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-36-768x155.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="222" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-37.png" alt="名前は「Walk」に変更" class="wp-image-692" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-37.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-37-300x67.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-37-768x170.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="toc9">遷移（Transition）を設定</span></h3>



<h4 class="wp-block-heading">Idle → Walkへの切り替え</h4>



<p class="wp-block-paragraph">Idle → Walkへアニメーションを紐づけるようにします！<br>以下を設定します。</p>



<ul class="wp-block-list">
<li>Idle を右クリック &#8211; Make Transitionを押下</li>



<li>Idle⇒Walkに矢印を紐づける</li>



<li>Idleをクリック
<ul class="wp-block-list">
<li><strong>Has Exit Time：OFF</strong>（今のアニメを最後まで再生するか設定するもの）</li>



<li><strong>Setting</strong>
<ul class="wp-block-list">
<li>Transition Duratio：0（切り替え時のなめらかさ（重なり時間））</li>
</ul>
</li>



<li><strong>Conditions</strong>
<ul class="wp-block-list">
<li><strong>Walk：true</strong>を設定</li>
</ul>
</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph"><strong>Has Exit Time</strong>：<strong>OFF</strong>にすることで、アニメーションが瞬時に切り替わるようになります。<br><strong>Walk：true</strong>になることで、<strong><span class="marker-under-red">Walkアニメーションが発動</span></strong>するようにしています。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="622" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-41.png" alt="Idle → Walkへの切り替え" class="wp-image-697" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-41.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-41-300x187.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-41-768x478.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<h4 class="wp-block-heading">Walk → Idleへの切り替え</h4>



<p class="wp-block-paragraph">Walk → Idleも同様に設定をします。</p>



<ul class="wp-block-list">
<li>Walkを右クリック  &#8211; Make Transitionを押下</li>



<li>Walk⇒Idleに矢印を紐づける</li>



<li>Walkをクリック
<ul class="wp-block-list">
<li><strong>Has Exit Time：OFF</strong>（今のアニメを最後まで再生するか設定するもの）</li>



<li>Setting
<ul class="wp-block-list">
<li>Transition Duratio：0（切り替え時のなめらかさ（重なり時間））</li>
</ul>
</li>



<li><strong>Conditions</strong>
<ul class="wp-block-list">
<li><strong>Walk：<strong>false</strong></strong>を設定</li>
</ul>
</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph"><br><strong>Walk：false</strong>になることで、Idle状態に切り替わり、<span class="marker-under-red"><strong>Walkアニメーションを停止</strong></span>するようにしています。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="622" src="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-40.png" alt="Walk → Idleへの切り替え" class="wp-image-696" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-40.png 1000w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-40-300x187.png 300w, https://naiterukaiju.com/wp-content/uploads/2026/02/↑作成したUIをドラッグする-40-768x478.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



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



<h2 class="wp-block-heading"><span id="toc10">⑥切り替える処理をつくる</span></h2>



<p class="wp-block-paragraph">最後に、スクリプトにアニメーションを切り替える処理を追加します！（コピペ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;

public class Player: MonoBehaviour
{
    private Animator _anim;

    private void Start()
    {
        _anim = GetComponent&lt;Animator>();
    }

    private void _Move()
    {
       _anim.SetBool("Walk", Mathf.Abs(_inputDirection.x) > 0.1f);
    }
}
</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">    </span><span style="color: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Animator</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_anim</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">_anim</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">Animator</span><span style="color: #D4D4D4">&gt;();</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">_Move</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">_anim</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetBool</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Walk&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">Mathf</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Abs</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_inputDirection</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">) &gt; 0.1</span><span style="color: #9CDCFE">f</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>



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



<p class="wp-block-paragraph">➡️「Animatorコンポーネントを入れておくための箱」を用意しています。</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>void Start()
{
    _anim = GetComponent&lt;Animator>();
}
</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">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">_anim</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">GetComponent</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">Animator</span><span style="color: #D4D4D4">&gt;();</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<ul class="wp-block-list">
<li>プレイヤー自身についている <strong>Animator</strong> を取得</li>



<li><code>_anim</code> 変数に保存する</li>
</ul>



<p class="wp-block-paragraph">このあと_anim.SetBool(&#8230;)</p>



<p class="wp-block-paragraph">のように Animator を操作したいからです。</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 _Move()
{
    _anim.SetBool("Walk", Mathf.Abs(_inputDirection.x) > 0.1f);
}
</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">_Move</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">_anim</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetBool</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Walk&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">Mathf</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Abs</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_inputDirection</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">) &gt; 0.1</span><span style="color: #9CDCFE">f</span><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"/>



<p class="wp-block-paragraph"><strong>_anim.SetBool(&#8220;Walk&#8221;, true or false);</strong></p>



<p class="wp-block-paragraph">これは、</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Animatorにある「Walk」というBoolパラメータの値を<br>true / false に変更する</p>
</blockquote>



<p class="wp-block-paragraph">ということをしています。</p>



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



<h3 class="wp-block-heading"><span id="toc12">Animator側ではこうなっています</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Walkの値</th><th>再生されるアニメ</th></tr></thead><tbody><tr><td>false</td><td>Idle</td></tr><tr><td>true</td><td>Walk</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">つまりこの1行で、</p>



<ul class="wp-block-list">
<li>Walk = true → 歩行アニメ</li>



<li>Walk = false → 待機アニメ</li>
</ul>



<p class="wp-block-paragraph">が切り替わるようになっています！</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>Mathf.Abs(_inputDirection.x) > 0.1f&lt;br></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">Mathf</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Abs</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_inputDirection</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">) &gt; 0.1</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">&lt;</span><span style="color: #9CDCFE">br</span><span style="color: #D4D4D4">&gt;</span></span></code></pre></div>



<p class="wp-block-paragraph">Mathf.Abs()は、<strong>絶対値</strong> を取る関数です。<br>ここではプレイヤーが移動しているか？を判定しています。<br>プレイヤーを動かしていないのに移動中と誤判定されることがあるので、&gt; 0.1としています。</p>



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



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



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



<p class="wp-block-paragraph">歩いているとき⇒歩行アニメーション、<br>止まっているとき⇒歩行アニメーションを停止<br>という感じで切り替えるようになりました🚶</p>



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



<h2 class="wp-block-heading"><span id="toc14">まとめ</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 class="wp-block-paragraph">最後まで読んでいただきありがとうございました！</p>
</div></div>



<p class="wp-block-paragraph">今回の記事をまとめると、</p>



<ol class="wp-block-list">
<li><strong>Animation Clip でアニメーション実体ファイルを用意</strong></li>



<li><strong>Animator Controllerでアニメーションを切り替える</strong></li>



<li><strong>画像をドラッグしてアニメーションを作る</strong></li>



<li><strong>切り替え用のパラメータを用意</strong></li>



<li><strong>スクリプト側で切り替え処理を実装</strong></li>
</ol>



<p class="wp-block-paragraph">上記の手順で解説させていただきました。</p>



<p class="wp-block-paragraph">今回のやり方を学べば他にも<strong>「ジャンプアニメーション」「パンチアニメーション」</strong>なども同じように実装することが出来ます！<br>この記事が少しでもゲーム制作のお役に立てたらうれしいです🦖<br><br>他にも、<br><strong>プレイヤーをジャンプさせるようにする<strong>実装方法</strong></strong>はこちら⬇️</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e3%82%b8%e3%83%a3%e3%83%b3%e3%83%97%e5%87%a6%e7%90%86%e3%82%92%e5%ae%9f%e8%a3%85%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/" title="【Unity2D】プレイヤーをジャンプさせる方法｜AddForce以外の方法も比較（コード全文・解説付き）" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/0ccf361de07c1b7781bea14f6da536e9.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】プレイヤーをジャンプさせる方法｜AddForce以外の方法も比較（コード全文・解説付き）</div><div class="blogcard-snippet external-blogcard-snippet">Unity2Dでプレイヤーをジャンプさせたいけど、ジャンプのさせ方が分からないジャンプが高くなりすぎる 連続ジャンプしてしまう 地面判定がうまくいかないといったことはありませんか？この記事では、ジャンプさせる実装法(解説付き)を初心者向けに...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e3%82%b8%e3%83%a3%e3%83%b3%e3%83%97%e5%87%a6%e7%90%86%e3%82%92%e5%ae%9f%e8%a3%85%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



<p class="wp-block-paragraph"><strong>プレイヤーの歩行に合わせてカメラを追従させるようにする実装方法</strong>はこちら⬇️</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e3%83%97%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e3%82%92%e8%bf%bd%e5%be%93%e3%81%95%e3%81%9b%e3%82%8b%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%ae%e5%ae%9f%e8%a3%85%e6%96%b9%e6%b3%95/" title="【Unity2D】プレイヤーを追従させるカメラを作るには？｜実装方法（コード全文・解説付き）" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/3ef8e13d029d5d61f7eb937fbb1399e7.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】プレイヤーを追従させるカメラを作るには？｜実装方法（コード全文・解説付き）</div><div class="blogcard-snippet external-blogcard-snippet">Unityで2Dアクションゲームを作っていると、「プレイヤーの歩行に合わせてカメラも追従させたい」「プレイヤーを歩かせてもカメラが追従しない」「カメラ追従させたが画面がガタつく・・・」「横だけ追従したい」といったことありますよね🤔この記事で...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e3%83%97%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e3%82%92%e8%bf%bd%e5%be%93%e3%81%95%e3%81%9b%e3%82%8b%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%ae%e5%ae%9f%e8%a3%85%e6%96%b9%e6%b3%95/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/unity-2d-walk-animation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2026/02/無題のビデオ-‐-Clipchampで作成-14.mp4" length="943302" type="video/mp4" />

			</item>
		<item>
		<title>【Unity2D】プレイヤーの周りだけ常時光を照らす仕組みを作ろう（導入〜実装まで）</title>
		<link>https://naiterukaiju.com/unity-2d-urp-lighting-player/</link>
					<comments>https://naiterukaiju.com/unity-2d-urp-lighting-player/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sun, 28 Dec 2025 14:35:31 +0000</pubDate>
				<category><![CDATA[Unity2D実装解説]]></category>
		<category><![CDATA[2D]]></category>
		<category><![CDATA[2Dゲーム]]></category>
		<category><![CDATA[Light]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[Unity初心者]]></category>
		<category><![CDATA[URP]]></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=462</guid>

					<description><![CDATA[今回は、URP（Universal Render Pipeline）の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 class="wp-block-paragraph">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



<p class="wp-block-paragraph">今回は、<strong>URP（Universal Render Pipeline）の2Dライト</strong>を使って、<br><strong>背景全体を暗くしつつ、プレイヤーの周りだけを明るく照らす</strong>方法を解説します。<br><br>導入～実装までそこまで難しくはないのですが、<br>導入方法や光を照らすまでの前提など個人的に色々ハマったので、その点も合わせて最後に紹介しようと思います。</p>



<p class="wp-block-paragraph">実際に実装出来るようになると夜のステージやダンジョン探索っぽい雰囲気が一気に出るので、<br>演出としてかなりおすすめです！</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-18" checked><label class="toc-title" for="toc-checkbox-18">目次</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">①URPを導入する</a><ol><li><a href="#toc4" tabindex="0">URPとは？</a></li><li><a href="#toc5" tabindex="0">Built-in Render Pipeline（Unity初期状態）について</a></li><li><a href="#toc6" tabindex="0">URP（Universal Render Pipeline）について</a></li><li><a href="#toc7" tabindex="0">実際にURPをインストールする</a></li></ol></li><li><a href="#toc8" tabindex="0">②URP 2D Renderer を作成する</a></li><li><a href="#toc9" tabindex="0">③Project Settings に URP を適用する（Graphics / Quality）</a><ol><li><a href="#toc10" tabindex="0">Graphics に適用</a></li><li><a href="#toc11" tabindex="0">Quality に適用</a></li></ol></li><li><a href="#toc12" tabindex="0">④背景画像を用意する</a><ol><li><a href="#toc13" tabindex="0">仮背景オブジェクトの作成</a></li><li><a href="#toc14" tabindex="0">Material の設定</a></li><li><a href="#toc15" tabindex="0">仮背景のおすすめ設定</a></li></ol></li><li><a href="#toc16" tabindex="0">⑤全体の暗さ設定をする</a><ol><li><a href="#toc17" tabindex="0">全体を暗くする（Global Light 2D）</a></li></ol></li><li><a href="#toc18" tabindex="0">⑥プレイヤー周りだけ照らす</a></li><li><a href="#toc19" tabindex="0">⑦動作確認</a></li><li><a href="#toc20" tabindex="0">個人的にハマった点</a><ol><li><a href="#toc21" tabindex="0">Sprite の Material が Sprites-Default のまま</a></li><li><a href="#toc22" tabindex="0">Sprite-Lit-Default にしたら真っ暗になった</a></li></ol></li><li><a href="#toc23" tabindex="0">自作のゲームで実装した例</a></li><li><a href="#toc24" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<ul class="wp-block-list">
<li>URP（Universal Render Pipeline）を導入し、<strong>背景全体を暗く</strong>調整することができる</li>



<li>プレイヤーの<strong>周りだけ常時照らす</strong>仕組みを作ることができる</li>
</ul>



<video
  src="https://naiterukaiju.com/wp-content/uploads/2025/12/無題のビデオ-‐-Clipchampで作成-11-1.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">前提（確認ポイント）</span></h2>



<ul class="wp-block-list">
<li>Unity 2021.3 LTS / 2022.3 LTS だと安定（他でもOK）</li>



<li>2Dプロジェクトでも導入可能</li>



<li>この記事は <strong>URP 2Dライト（Light 2D）</strong> を使います</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc3">①URPを導入する</span></h2>



<p class="wp-block-paragraph">まず初めにURP（Universal Render Pipeline）をインストールする必要があります。<br></p>



<h3 class="wp-block-heading"><span id="toc4">URPとは？</span></h3>



<p class="wp-block-paragraph">URP（Universal Render Pipeline）とは、<br><span class="marker-under-red"><strong>Unityで「画面をどう描画するか」を決める仕組み</strong></span>のようなものです。<br>Unityを新規作成した直後は、<strong>Built-in Render Pipeline（旧方式）</strong> が使われています。<br>Built-in（初期状態）と URP の決定的な違いは以下です。</p>



<h3 class="wp-block-heading"><span id="toc5">Built-in Render Pipeline（Unity初期状態）について</span></h3>



<ul class="wp-block-list">
<li>昔からある方式</li>



<li>「3D向けの光」が前提（Built-in には <strong>2D専用ライト</strong> が存在しない）</li>



<li>2Dは <strong>Spriteを貼っているだけ</strong> という扱い</li>
</ul>



<p class="wp-block-paragraph">つまり、</p>



<ul class="wp-block-list">
<li>キャラや背景は<br>「ただの画像」</li>



<li>光は<br>「3D空間用のもの」</li>
</ul>



<p class="wp-block-paragraph">なので、</p>



<ul class="wp-block-list">
<li>2D用の Global Light</li>



<li>2D用の Point / Spot Light</li>
</ul>



<p class="wp-block-paragraph">という概念自体が <strong>存在</strong>しないため、<strong>2D専用ライト</strong>が用意されていません。</p>



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



<h3 class="wp-block-heading"><span id="toc6">URP（Universal Render Pipeline）について</span></h3>



<p class="wp-block-paragraph">URPでは</p>



<ul class="wp-block-list">
<li><strong>2D Renderer</strong> という専用描画ルートがある</li>



<li>Spriteを<br>「光を受ける物体」として扱える。</li>



<li>2D用のライト計算が最初から組み込まれている</li>
</ul>



<p class="wp-block-paragraph">つまり、<strong><span class="marker-under-red">URPは「2Dも3Dも、ちゃんと光のある世界として扱う」仕組み</span></strong>です。</p>



<p class="wp-block-paragraph">「URPを導入すると何が増えるのか？」を具体的に説明すると、<br>Unity内部で次のものが有効になります🦖</p>



<h4 class="wp-block-heading"> Light2D という新しいコンポーネント</h4>



<p class="wp-block-paragraph">Built-in（Unity初期状態）：</p>



<ul class="wp-block-list">
<li><code>Light</code>（3D用）がデフォルトで用意されている</li>
</ul>



<p class="wp-block-paragraph">URP 2D：</p>



<ul class="wp-block-list">
<li><code>Light2D</code>
<ul class="wp-block-list">
<li>Global Light 2D　追加</li>



<li>Point Light 2D　追加</li>



<li>Spot Light 2D　追加</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">➡️ <strong><span class="marker-under-red">2D専用のリアルな光と影を追加するための専用コンポーネント</span></strong>が使えるようになります！</p>



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



<h4 class="wp-block-heading">Sprite が「光を受けるかどうか」を選べるようになる</h4>



<p class="wp-block-paragraph">URPでは Sprite に対して：</p>



<ul class="wp-block-list">
<li>光を無視する（Unlit）</li>



<li>光を受ける（Lit）</li>
</ul>



<p class="wp-block-paragraph">を <strong>Material で明確に分けます</strong>。</p>



<h5 class="wp-block-heading">例</h5>



<ul class="wp-block-list">
<li><code>Sprites-Default</code><br>→ 光を無視（常に同じ色）</li>



<li><code>Sprite-Lit-Default</code><br>→ Light2D の影響を受ける</li>
</ul>



<h4 class="wp-block-heading">「光が0なら黒になる」という、当たり前の世界になる</h4>



<p class="wp-block-paragraph">Built-inでは⬇️</p>



<ul class="wp-block-list">
<li>光がなくてもSpriteは見える</li>
</ul>



<p class="wp-block-paragraph">URP 2Dでは⬇️</p>



<ul class="wp-block-list">
<li><strong>光がなければ見えない</strong></li>
</ul>



<p class="wp-block-paragraph">これは、「<strong>現実世界と同じルールを2Dにも持ち込んだ</strong>」ということになります。</p>



<h3 class="wp-block-heading"><span id="toc7">実際にURPをインストールする</span></h3>



<p class="wp-block-paragraph">前置きが長くなりましたが、実際にURPをインストールしていきましょう！</p>



<ul class="wp-block-list">
<li><strong>Window → Package Manager</strong></li>



<li>左上のプルダウンを <strong>Unity Registry</strong> に切り替える</li>



<li><strong>Universal RP</strong> を探して <strong>Install</strong>をします</li>
</ul>



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



<p class="wp-block-paragraph"><br>「Install」⇒「Remove」に切り替わったらインストール完了です！</p>



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



<h2 class="wp-block-heading"><span id="toc8">②URP 2D Renderer を作成する</span></h2>



<p class="wp-block-paragraph">次に、<strong>「URP Asset (with 2D Renderer)」</strong>を作っていきます。<br><br>これは、<strong>Unityで「2Dライトを使うために必ず必要な設定」</strong> です。<br>Unityの初期状態では、2Dゲームであっても<br>描画の仕組みは <strong>3D向け（Universal Renderer）</strong> のままになっています。<br>そのため、<strong>2Dゲームで光の演出をしたい場合は、</strong>必ず “2D Renderer” を使うURP Assetを作成する必要があります。<br>手順は以下の通りです。</p>



<ol class="wp-block-list">
<li><strong>Assets → Create → Rendering</strong></li>



<li><strong>URP Asset (with 2D Renderer)</strong> を選択する</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/12/↑作成したUIをドラッグする-4-1024x523.png" alt="URP Asset (with 2D Renderer) 選択" class="wp-image-469" srcset="https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-4-1024x523.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-4-300x153.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-4-768x392.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-4.png 1218w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="523" src="https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-8-1024x523.png" alt="URP Asset (with 2D Renderer) 設定後" class="wp-image-473" srcset="https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-8-1024x523.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-8-300x153.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-8-768x392.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-8.png 1218w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">すると、2つ自動で生成されます。</p>



<p class="wp-block-paragraph">① Pipeline Asset（URPの本体）</p>



<p class="wp-block-paragraph">1つ目は <strong>Pipeline Asset</strong> です。</p>



<p class="wp-block-paragraph">これは、<strong><span class="marker-under-red">プロジェクト全体の「描画ルール」をまとめた本体ファイル</span></strong>になります。</p>



<p class="wp-block-paragraph">具体的には、</p>



<ul class="wp-block-list">
<li>URP を使うかどうか</li>



<li>どの Renderer（2D / 3D）を使うか</li>



<li>ライトや描画の基本方針</li>
</ul>



<p class="wp-block-paragraph">といった、<strong><span class="marker-under-red">プロジェクト全体に影響する設定</span></strong>を管理しています。<br>この Pipeline Asset を<br><strong>Project Settings → Graphics / Quality</strong> に設定することで、<br>「このプロジェクトは URP（2D Renderer）で描画する」という宣言になります。</p>



<p class="wp-block-paragraph">② Renderer（2D Renderer 用の設定アセット）</p>



<p class="wp-block-paragraph">もう1つ作られるのが、<br><strong>2D Renderer 用の Renderer アセット</strong> です。</p>



<p class="wp-block-paragraph">これは Pipeline Asset とは別物で、<strong><span class="marker-under-red">2D専用の描画処理・ライト計算を担当する設定ファイル</span></strong>になります。</p>



<p class="wp-block-paragraph">この Renderer では、</p>



<ul class="wp-block-list">
<li>Global / Spot / Point Light 2D の計算方法</li>



<li>2Dライトのブレンド設定</li>



<li>影や減衰の処理</li>
</ul>



<p class="wp-block-paragraph">といった、<strong>「2D描画の中身」</strong> を管理しています。</p>



<p class="wp-block-paragraph">Pipeline Asset の中から<br>「この Renderer を使う」と指定されることで、<br>初めて <strong>URP 2Dライトが有効</strong> になります。<br></p>



<p class="wp-block-paragraph">名前を以下等に変更します：</p>



<ul class="wp-block-list">
<li><code>URP_2D.asset</code>（Pipeline Asset：本体）</li>



<li><code>URP_2D_Renderer.asset</code>（Renderer 2D Data：2Dレンダラー）</li>
</ul>



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



<p class="wp-block-paragraph">これにより、</p>



<ul class="wp-block-list">
<li>2Dライトが使えるようになる</li>



<li>スプライトが光の影響を受けるようになる</li>



<li>夜の表現や雰囲気作りが簡単にできる</li>
</ul>



<p class="wp-block-paragraph">といった、<strong>2Dゲーム向けの描画環境</strong> が整います。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">⚠️「with Universal Renderer」を選ぶと3D向けになり、2D Light が正しく働かないことがあるので注意！</p>
</blockquote>



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



<h2 class="wp-block-heading"><span id="toc9">③Project Settings に URP を適用する（Graphics / Quality）</span></h2>



<p class="wp-block-paragraph">作っただけでは反映されないので、<strong>適用が必要</strong>です。<br>以下の手順で行っていきます。</p>



<h3 class="wp-block-heading"><span id="toc10">Graphics に適用</span></h3>



<ol class="wp-block-list">
<li><strong>Edit → Project Settings → Graphics</strong></li>



<li><strong>Scriptable Render Pipeline Settings</strong> に<br><code>URP_2D.asset</code> （Pipeline Asset本体）をドラッグ＆ドロップする<br><br>以下のメッセージが表示される場合は「Continue」を選択します。</li>
</ol>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="523" src="https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-9-1024x523.png" alt="continueメッセージ" class="wp-image-475" style="aspect-ratio:1.958009866534093;width:564px;height:auto" srcset="https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-9-1024x523.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-9-300x153.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-9-768x392.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-9.png 1218w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><span id="toc11">Quality に適用</span></h3>



<ol class="wp-block-list">
<li><strong>Edit → Project Settings → Quality</strong></li>



<li>上にある <strong>Quality Level（Very Low / Low / Medium / High / Very High / Ultra など）</strong> を1つずつクリックして3を行う</li>



<li>それぞれの <strong>Render Pipeline Asset</strong> に 生成した<code><strong>URP_2D.asset</strong></code> （Pipeline Asset：本体）を1つずつ設定する</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/12/↑作成したUIをドラッグする-10-1024x523.png" alt="Quality設定" class="wp-image-476" srcset="https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-10-1024x523.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-10-300x153.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-10-768x392.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-10.png 1218w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">✅ ここを揃えないと「環境によってライトが効いたり効かなかったり」します！</p>
</blockquote>



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



<h2 class="wp-block-heading"><span id="toc12">④背景画像を用意する</span></h2>



<p class="wp-block-paragraph">2D ライトは <strong>描画されているものにしか影響しません</strong>。<br>そのため、ここでは「暗さの基準になる仮背景」を用意します。<br>（※既に背景を用意してある場合は、<strong>Material の設定以降</strong>だけ確認します）</p>



<h3 class="wp-block-heading"><span id="toc13">仮背景オブジェクトの作成</span></h3>



<ol class="wp-block-list">
<li>Hierarchy → <strong>Create Empty</strong>を追加する</li>



<li>名前を <code>Background</code>等 にする</li>



<li>Add Componentで<strong>「<strong>Sprite Renderer</strong>」</strong> を追加</li>



<li>適当な四角い Sprite を設定<br>（白1pxでもOK、拡大して画面全体を覆うようにする）</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/12/↑作成したUIをドラッグする-14-1024x523.png" alt="Sprite Renderer設定" class="wp-image-483" srcset="https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-14-1024x523.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-14-300x153.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-14-768x392.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-14.png 1218w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><span id="toc14">Material の設定</span></h3>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="493" height="34" src="https://naiterukaiju.com/wp-content/uploads/2025/12/image.png" alt="Material の設定" class="wp-image-484" srcset="https://naiterukaiju.com/wp-content/uploads/2025/12/image.png 493w, https://naiterukaiju.com/wp-content/uploads/2025/12/image-300x21.png 300w" sizes="(max-width: 493px) 100vw, 493px" /></figure>



<p class="wp-block-paragraph">Sprite Renderer<br> →<strong>Material：<span class="marker-under-red">Sprite-Lit-Default</span></strong>に変更する（重要）<br><br>※ Sprites-Default のままだと<br><strong>URP 2D Light が一切効</strong>かないため、変更します。</p>



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



<h3 class="wp-block-heading"><span id="toc15">仮背景のおすすめ設定</span></h3>



<ul class="wp-block-list">
<li>Color：少し暗いグレー or 紺</li>



<li>Sorting Layer：BG（なければ Default でもOK）</li>



<li>Order in Layer：-10 など</li>
</ul>



<h2 class="wp-block-heading"><span id="toc16">⑤全体の暗さ設定をする</span></h2>



<h3 class="wp-block-heading"><span id="toc17">全体を暗くする（Global Light 2D）</span></h3>



<ul class="wp-block-list">
<li>Hierarchy で<br><strong>GameObject → Light → 2D → Global Light 2D</strong>を追加します</li>
</ul>



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



<ul class="wp-block-list">
<li>Inspector で調整（例）
<ul class="wp-block-list">
<li>Color：黒ではなく<strong>濃い紺</strong>（夜っぽく）</li>



<li>Intensity：<strong>0.2〜0.4</strong> くらい</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="501" src="https://naiterukaiju.com/wp-content/uploads/2025/12/image-1-1024x501.png" alt="Inspector で調整" class="wp-image-489" srcset="https://naiterukaiju.com/wp-content/uploads/2025/12/image-1-1024x501.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/12/image-1-300x147.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/12/image-1-768x376.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/12/image-1.png 1223w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">💡黒 (#000000) にすると見えなくなりすぎるので、濃い青が扱いやすいです。</p>
</blockquote>



<h2 class="wp-block-heading"><span id="toc18">⑥プレイヤー周りだけ照らす</span></h2>



<ol class="wp-block-list">
<li>Player の子オブジェクトとして<br><strong>Light → 2D → Spot Light 2D</strong>を追加します</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/12/↑作成したUIをドラッグする-12-1024x523.png" alt="Spot Light 2Dを選ぶ" class="wp-image-481" srcset="https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-12-1024x523.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-12-300x153.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-12-768x392.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/12/↑作成したUIをドラッグする-12.png 1218w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol class="wp-block-list">
<li>調整例
<ul class="wp-block-list">
<li>Intensity：0.5〜1</li>



<li>Inner Radius：0.5〜2</li>



<li>Inner / Outer Spot Angle ：360〜360（光が円形になります）</li>



<li>Color：白〜少し黄み</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="493" height="574" src="https://naiterukaiju.com/wp-content/uploads/2025/12/image-2.png" alt="Light 2Dでの設定" class="wp-image-490" srcset="https://naiterukaiju.com/wp-content/uploads/2025/12/image-2.png 493w, https://naiterukaiju.com/wp-content/uploads/2025/12/image-2-258x300.png 258w" sizes="(max-width: 493px) 100vw, 493px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">💡子にしておけば、プレイヤーが動いても常に追従します（スクリプト不要）。</p>
</blockquote>



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



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



<p class="wp-block-paragraph">➡️プレイヤーの周りだけ常時光を照らすことが出来ました！</p>



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



<h2 class="wp-block-heading"><span id="toc20">個人的にハマった点</span></h2>



<p class="wp-block-paragraph">URPもインストール済、背景も用意した、プレイヤーの周りだけ照らす処理も作成したのに何も変化がない、、🫠<br>以下は個人的にハマった点です。<br>上手くいかない場合は以下を確認してみてください。</p>



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



<h3 class="wp-block-heading"><span id="toc21">Sprite の Material が Sprites-Default のまま</span></h3>



<p class="wp-block-paragraph">先ほど「④背景画像を用意する」の章でも触れましたが、ライトを受けるにはSpriteを光の影響を受けるようにする必要があります。</p>



<p class="wp-block-paragraph">背景スプライト（SpriteRenderer）の Material が</p>



<ul class="wp-block-list">
<li><strong>Sprites-Default</strong>（光を無視する）</li>



<li><strong>Sprite-Lit-Default</strong>（光の影響を受ける）</li>
</ul>



<p class="wp-block-paragraph">で挙動が変わります。</p>



<h5 class="wp-block-heading">やること</h5>



<p class="wp-block-paragraph">背景オブジェクトを選択 → Sprite Renderer → <strong>Material</strong> を</p>



<ul class="wp-block-list">
<li><strong>Sprite-Lit-Default（URP 2D）</strong></li>
</ul>



<p class="wp-block-paragraph">に変更します。</p>



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



<h3 class="wp-block-heading"><span id="toc22">Sprite-Lit-Default にしたら真っ暗になった</span></h3>



<p class="wp-block-paragraph">これはバグではなく <strong>正常挙動</strong>です。</p>



<p class="wp-block-paragraph"><strong>Sprite-Lit-Default は “光がないと黒”</strong> になります。<br>つまり：</p>



<ul class="wp-block-list">
<li>Global Light をOFFにした</li>



<li>そもそもLight 2Dが置かれていない<br>→ <strong>光源ゼロ</strong><br>→ <strong>全部真っ暗</strong></li>
</ul>



<p class="wp-block-paragraph">という状態です。</p>



<h4 class="wp-block-heading">対処</h4>



<ul class="wp-block-list">
<li>Global Light をONにして、Intensityを弱めに</li>



<li>プレイヤーのPoint Lightの範囲を広げる</li>



<li>（必要なら）背景専用に弱いGlobal Lightを追加する</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc23">自作のゲームで実装した例</span></h2>



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



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



<p class="wp-block-paragraph">今回紹介したライト演出機能は、実際に制作中の夜の街アクションゲームでも使用しています。<br><br>開発当初はライトを設定せずにステージを作っていました。<br>しかし、夜空やビルの背景を配置しても全体的に明るく見えてしまい、今回舞台にしている「夜の街」という雰囲気を上手く表現できませんでした。<br>そこでプレイヤーの周囲だけを明るく照らし、それ以外の場所は少し暗めにすることで、夜の街を探索しているような雰囲気を演出することが出来ました🌃<br>また、プレイヤーが移動するとライトも一緒に移動するため暗い場所でも自分の位置が分かりやすくなったと思います。<br>実際にライトを導入する前と比べると、ステージの雰囲気が大きく変わり、夜の世界観をより表現できるようになったと感じています🦖<br></p>



<h2 class="wp-block-heading"><span id="toc24">まとめ</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 class="wp-block-paragraph">最後まで読んでいただきありがとうございました！</p>
</div></div>



<p class="wp-block-paragraph">URPの2Dライトを使うと、</p>



<ul class="wp-block-list">
<li><strong>夜の雰囲気</strong></li>



<li><strong>プレイヤー中心の視界演出</strong></li>



<li><strong>探索・緊張感</strong></li>
</ul>



<p class="wp-block-paragraph">が一気に作れます💡</p>



<p class="wp-block-paragraph">この記事では、<strong>URP（Universal Render Pipeline）の2Dライト</strong>を使って、<strong>背景全体を暗くしつつ、プレイヤーの周りだけを明るく照らす</strong>方法を解説しました。<br>最後まで読んでいただきありがとうございました。<br>この記事が少しでもゲーム制作に役立てたら嬉しいです🦖</p>



<p class="wp-block-paragraph">他にも、<br><strong>「プレイヤーを追従させるカメラワークを作りたい」<br>「歩行やジャンプ時にアニメーションをつけたい」</strong><br>という実装したい人は、こちらの記事もご興味あれば覗いてみてください👾</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e3%83%97%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e3%82%92%e8%bf%bd%e5%be%93%e3%81%95%e3%81%9b%e3%82%8b%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%ae%e5%ae%9f%e8%a3%85%e6%96%b9%e6%b3%95/" title="【Unity2D】プレイヤーを追従させるカメラを作るには？｜実装方法（コード全文・解説付き）" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/3ef8e13d029d5d61f7eb937fbb1399e7.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】プレイヤーを追従させるカメラを作るには？｜実装方法（コード全文・解説付き）</div><div class="blogcard-snippet external-blogcard-snippet">Unityで2Dアクションゲームを作っていると、「プレイヤーの歩行に合わせてカメラも追従させたい」「プレイヤーを歩かせてもカメラが追従しない」「カメラ追従させたが画面がガタつく・・・」「横だけ追従したい」といったことありますよね🤔この記事で...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e3%83%97%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e3%82%92%e8%bf%bd%e5%be%93%e3%81%95%e3%81%9b%e3%82%8b%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%ae%e5%ae%9f%e8%a3%85%e6%96%b9%e6%b3%95/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



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

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e3%80%91%e6%ad%a9%e8%a1%8c%e6%99%82%e3%82%a2%e3%83%8b%e3%83%a1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%ef%bc%882d%ef%bc%89%ef%bd%9canim/" title="【Unity2D】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/26bd1bed9aae0178a08aae993751ecbe.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう</div><div class="blogcard-snippet external-blogcard-snippet">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖今回は 2Dキャラの「歩行」時のアニメーションを を Unity で作る方法を解説します！手順としては、待機、歩行用の画像を用意するAnimation Clip（歩くアニメ）を作成す...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e3%80%91%e6%ad%a9%e8%a1%8c%e6%99%82%e3%82%a2%e3%83%8b%e3%83%a1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%ef%bc%882d%ef%bc%89%ef%bd%9canim/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



<p class="wp-block-paragraph"><br></p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/unity-2d-urp-lighting-player/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2025/12/無題のビデオ-‐-Clipchampで作成-11-1.mp4" length="1200517" type="video/mp4" />

			</item>
		<item>
		<title>【ゲーム制作ログ#2】プレイヤーの周りだけ光を照らす演出を作って夜の雰囲気を出した！</title>
		<link>https://naiterukaiju.com/unity-progress-urp-player-lighting/</link>
					<comments>https://naiterukaiju.com/unity-progress-urp-player-lighting/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Sat, 29 Nov 2025 14:08:03 +0000</pubDate>
				<category><![CDATA[個人制作ゲーム開発記]]></category>
		<category><![CDATA[2D Renderer]]></category>
		<category><![CDATA[2Dゲーム]]></category>
		<category><![CDATA[Light]]></category>
		<category><![CDATA[Point Light 2D]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[Unity初心者]]></category>
		<category><![CDATA[URP]]></category>
		<category><![CDATA[アクションゲーム]]></category>
		<category><![CDATA[ゲーム制作]]></category>
		<category><![CDATA[光]]></category>
		<category><![CDATA[夜の街]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=445</guid>

					<description><![CDATA[こんにちは！夜の街2Dアクションゲームを制作中の怪獣と申します🦖本日は自作ゲームの進捗報告になります。 プレイヤーの周りだけを照らすライト演出を実装！]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">こんにちは！<br>夜の街2Dアクションゲームを制作中の怪獣と申します🦖<br>本日は自作ゲームの進捗報告になります。<br></p>



<h2 class="wp-block-heading">プレイヤーの周りだけを照らすライト演出を実装！</h2>



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



<p class="wp-block-paragraph"><br>背景全体を暗くし、プレイヤーの周りだけ光を照らすようにして夜の雰囲気をより出すようにしました！<br>実装には <strong>URP（Universal Render Pipeline）＋ 2D Renderer</strong> を使用しています。<br>やったことはシンプルで、</p>



<ol class="wp-block-list">
<li>プロジェクトを URP 2D 用に設定</li>



<li>環境全体用の暗めのLightを作成</li>



<li>プレイヤーの子オブジェクトとして <strong>Spot Light 2D</strong> を追加</li>



<li>光量・半径・カラーを調整</li>
</ol>



<p class="wp-block-paragraph">これだけで「主人公の周りだけ照らすライト」が完成しました🌃<br>主人公の移動と連動してライトが動くので、暗い街を進む雰囲気が出たと思います。</p>



<h2 class="wp-block-heading">実装は簡単だが、準備が少々面倒だった</h2>



<p class="wp-block-paragraph">ライト自体の設定は簡単なのですが、<br>URPの導入や 2D Renderer の設定に少し手こずりました…😇</p>



<ul class="wp-block-list">
<li>URPの新規アセット作成</li>



<li>2D Renderer への切り替え</li>



<li>プロジェクト設定の適用</li>



<li>Sprite Editor のマテリアル設定変更（Lit化）</li>
</ul>



<p class="wp-block-paragraph">など、事前準備が必要になります。</p>



<p class="wp-block-paragraph">このあたりの手順は以下の記事で詳しくまとめていますので、<br><span class="marker-under-red">「2Dゲームで夜の雰囲気を出したい」、「ダンジョン探索時の演出をつけたい」</span>等の希望があれば<br>ぜひ実践してみてください！</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity2d%e5%85%a5%e9%96%80%e3%80%91%e3%83%97%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e3%81%ae%e5%91%a8%e3%82%8a%e3%81%a0%e3%81%91%e5%b8%b8%e6%99%82%e5%85%89%e3%82%92%e7%85%a7%e3%82%89%e3%81%99/" title="【Unity2D】プレイヤーの周りだけ常時光を照らす仕組みを作ろう（導入〜実装まで）" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://naiterukaiju.com/wp-content/uploads/cocoon-resources/blog-card-cache/7a87947c35db9a9d0ae700145f1dd6ff.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Unity2D】プレイヤーの周りだけ常時光を照らす仕組みを作ろう（導入〜実装まで）</div><div class="blogcard-snippet external-blogcard-snippet">今回は、URP（Universal Render Pipeline）の2Dライトを使って、背景全体を暗くしつつ、プレイヤーの周りだけを明るく照らす方法を解説します。導入～実装までそこまで難しくはないのですが、導入方法や光を照らすまでの前提な...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com/%e3%80%90unity2d%e5%85%a5%e9%96%80%e3%80%91%e3%83%97%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e3%81%ae%e5%91%a8%e3%82%8a%e3%81%a0%e3%81%91%e5%b8%b8%e6%99%82%e5%85%89%e3%82%92%e7%85%a7%e3%82%89%e3%81%99/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">naiterukaiju.com</div></div></div></div></a>
</div>



<p class="wp-block-paragraph">引き続き2Dゲーム制作の方もぼちぼちと進めていきます🦖<br>それでは！</p>



<p class="wp-block-paragraph"><br><br></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/unity-progress-urp-player-lighting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://naiterukaiju.com/wp-content/uploads/2025/11/無題のビデオ-‐-Clipchampで作成-10.mp4" length="458694" type="video/mp4" />

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