<?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アクションゲーム制作開発記</title>
	<atom:link href="https://naiterukaiju.com/tag/%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%97/feed/" rel="self" type="application/rss+xml" />
	<link>https://naiterukaiju.com</link>
	<description>Unityでゲームを作る方法を初心者目線で発信👾</description>
	<lastBuildDate>Mon, 04 May 2026 05:16:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://naiterukaiju.com/wp-content/uploads/2025/09/cropped-Enemy-32x32.png</url>
	<title>ジャンプ | 怪獣の2Dアクションゲーム制作開発記</title>
	<link>https://naiterukaiju.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Unity2D】効果音（SE）を鳴らす方法｜PlayOneShotの使い方とPrefab方式との違いも解説</title>
		<link>https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e5%8a%b9%e6%9e%9c%e9%9f%b3%ef%bc%88se%ef%bc%89%e3%82%92%e9%b3%b4%e3%82%89%e3%81%99%e6%96%b9%e6%b3%95%ef%bd%9cplayoneshot%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9%e3%81%a8prefab/</link>
					<comments>https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e5%8a%b9%e6%9e%9c%e9%9f%b3%ef%bc%88se%ef%bc%89%e3%82%92%e9%b3%b4%e3%82%89%e3%81%99%e6%96%b9%e6%b3%95%ef%bd%9cplayoneshot%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9%e3%81%a8prefab/#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）を鳴ら [&#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>こんにちは！Unityで2dゲームを制作中の怪獣です🦖</p>
</div></div>



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



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



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



<p>などの方に向けた記事となっています！</p>



<p>この記事では、<strong>Unity2Dで効果音（SE）を鳴らす基本として PlayOneShot の使い方</strong>を解説しつつ、後半では<strong>Prefabを使った鳴らし方との違い</strong>も紹介します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-10 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/2026/04/9327DB85-EFD6-4A95-A63A-1FA1F0A35E85.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>まず結論として、<strong>通常のSEなら PlayOneShot が最もシンプルでおすすめ</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-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">通常のSEはPlayOneShotがおすすめ</a></li><li><a href="#toc3" tabindex="0">① AudioSourceを追加する</a></li><li><a href="#toc4" tabindex="0">② PlayOneShotで効果音を鳴らす基本コード</a><ol><li><a href="#toc5" tabindex="0">何をしているか1行ずつ解説すると</a></li></ol></li><li><a href="#toc6" tabindex="0">③ AudioSource、音声ファイルをアタッチする</a><ol><li><a href="#toc7" tabindex="0">ジャンプ処理などの特定のアクション直後に組み込む例</a></li><li><a href="#toc8" tabindex="0">よくあるエラー・つまずきポイント</a></li></ol></li><li><a href="#toc9" tabindex="0">④ Prefab方式での作り方（任意）</a><ol><li><a href="#toc10" tabindex="0">Prefab方式での作り方手順</a></li><li><a href="#toc11" tabindex="0">Prefab化した効果音を呼び出す処理を書く</a></li><li><a href="#toc12" tabindex="0">Prefab化したものを紐づける</a></li><li><a href="#toc13" tabindex="0">効果音プレハブを自動で削除させる</a></li></ol></li><li><a href="#toc14" tabindex="0">PlayOneShotとPrefab方式の違い</a><ol><li><a href="#toc15" tabindex="0">どっちを使うべき？</a></li></ol></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>PlayOneShot で基本的な効果音の鳴らし方が分かる</li>



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



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



<li>どの方法を選べばいいかが分かる</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc2">通常のSEはPlayOneShotがおすすめ</span></h2>



<p><strong><span class="marker-under-blue"><span class="marker-under-red">ジャンプ音、ダメージ音、ボタン音など、通常の効果音であれば PlayOneShot </span></span></strong>が使いやすいです。</p>



<p>理由は次の通りで、一番シンプルで扱いやすいからです。</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">① AudioSourceを追加する</span></h2>



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



<p>１．Hierarchyでプレイヤーオブジェクトを選択する。<br>２．Inspector の <strong>Add Component</strong> をクリック</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" 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>３．<strong>AudioSource</strong> を追加する</p>



<figure class="wp-block-image size-full"><img 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>勝手に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 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="toc4">② 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="toc5">何をしているか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>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>再生したい音声ファイルを入れておく変数です。</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><strong>指定した AudioClip を1回だけ再生しています。</strong><br>SEのように「必要な瞬間だけ鳴らしたい音」と相性がいいです🙆</p>



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



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



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



<p>１．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>３．ソース上で定義した「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="toc7">ジャンプ処理などの特定のアクション直後に組み込む例</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>例えば、ジャンプさせた直後に効果音を鳴らしたい場合は、<br>ジャンプ処理の直後に書くことでジャンプしたタイミングで音を鳴らせます！</p>



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



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



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



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



<p><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><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><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="toc9">④ Prefab方式での作り方（任意）</span></h2>



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



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



<p>たとえば、</p>



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



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



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



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



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



<h3 class="wp-block-heading"><span id="toc10">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>ここまで出来たら<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="toc11">Prefab化した効果音を呼び出す処理を書く</span></h3>



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



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



<p><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="toc13">効果音プレハブを自動で削除させる</span></h3>



<p>音が鳴り終わった後もオブジェクトが残ってしまうと、<br><strong>ヒエラルキーがSEだらけになる</strong>ので、<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>このスクリプトを<strong>効果音プレハブ</strong>（SE）に追加することで、<br>音が終わると自動的に消えるようになります！</p>



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



<p>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="toc15">どっちを使うべき？</span></h3>



<p>まずは動かせるようにしたい場合はPlayOneShotがおススメです！</p>



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



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



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



<p>他のイベントとセットで扱いたいなど、機能を拡張したい場合は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="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>最後まで読んでいただきありがとうございました！</p>
</div></div>



<p>Unityで効果音を鳴らすなら、まずは <strong>PlayOneShot</strong> を使うのがおすすめです。</p>



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



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



<p>まずは 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 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/02/Unityで2Dアクションゲームを作ろう！のコピー-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/Unityで2Dアクションゲームを作ろう！のコピー-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2026/02/Unityで2Dアクションゲームを作ろう！のコピー-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2026/02/Unityで2Dアクションゲームを作ろう！のコピー-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】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう</div><div class="blogcard-snippet internal-blogcard-snippet">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖今回は 2Dキャラの「歩行」時のアニメーションを を Unity で作る方法を解説します！手順としては、待機、歩行用の画像を用意するAnimation Clip（歩くアニメ）を作成す...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.02.08</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 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/Unityで2Dアクションゲームを作ろう！-2-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！-2-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！-2-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！-2-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity2D】敵に触れたらダメージを受ける仕組みの作り方｜（コード全文・解説付き）</div><div class="blogcard-snippet internal-blogcard-snippet">Unity2Dでアクションゲームを作っていると、敵に触れたらHPを減らしたいダメージ処理を入れたいと思うことがありますよね。この記事では、敵に触れたらプレイヤーがダメージを受ける仕組みの作り方を、初心者向けにわかりやすく解説します！今回は ...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img 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.29</div></div></div></div></a>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/%e3%80%90unity2d%e3%80%91%e5%8a%b9%e6%9e%9c%e9%9f%b3%ef%bc%88se%ef%bc%89%e3%82%92%e9%b3%b4%e3%82%89%e3%81%99%e6%96%b9%e6%b3%95%ef%bd%9cplayoneshot%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9%e3%81%a8prefab/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Unity2D】プレイヤーをジャンプさせる方法｜AddForce以外の方法も比較（コード全文・解説付き）</title>
		<link>https://naiterukaiju.com/unity2d%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/</link>
					<comments>https://naiterukaiju.com/unity2d%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/#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[Unity2Dでプレイヤーをジャンプさせたいけど、 といったことはありませんか？この記事では、ジャンプさせる実装法(解説付き)を初心者向けにわかりやすく解説します！また、ただ実装しただけだとジャンプが空中中に無限に出来て [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-10 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/2026/04/9327DB85-EFD6-4A95-A63A-1FA1F0A35E85.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



<p>Unity2Dでプレイヤーをジャンプさせたいけど、</p>



<ul class="wp-block-list">
<li>ジャンプのさせ方が分からない</li>



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



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



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



<p>といったことはありませんか？<br>この記事では、<span class="marker-under-red"><strong>ジャンプさせる実装法(解説付き)を初心者向けにわかりやすく解説します！</strong></span><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>Unityの移動処理には<strong>「AddForce・velocity・transform」</strong>の3種類の実装方法がありますが、<br>今回は<strong>重力を活かして自然なジャンプ</strong>にしたいので、<strong>AddForce</strong>を使った実装方法を解説しています。<br>（自作の横スクロール型のアクションゲームでは、<strong>AddForce</strong>で実装するのが一番自然に感じました。）</p>
</blockquote>



<p>他の実装方法の解説、比較もしていますので、よければご参照ください！<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-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">事前準備しておくこと</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>Input Systemでボタン操作を設定している前提で進めています。<br>Input Systemの導入がまだ出来ていない場合は、まずこちらの記事から読むとスムーズです👾<br>こちらの記事は、Input System導入～ジャンプ実装解説を含んだより初心者向けの記事となっています。<br>（※旧Input版の実装方法も後半で解説あり）</p>
</blockquote>


<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a3%e3%80%91%e3%82%b8%e3%83%a3%e3%83%b3%e3%83%97%e5%87%a6%e7%90%86%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86/" title="【Unity入門④】プレイヤーをジャンプさせる処理を作ろう！" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門④】プレイヤーをジャンプさせる処理を作ろう！</div><div class="blogcard-snippet internal-blogcard-snippet">前回はプレイヤーの移動に合わせて顔の向きを変更させる方法の解説をしました。今回は ジャンプを作っていきます！ジャンプ処理自体はシンプルに作れますが、ジャンプ後の制御も行わないと空中でも無限ジャンプできてしまいます。この記事では Input &#8230;</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.09.24</div></div></div></div></a>


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



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



<p><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>↓※以下は各処理の説明です。わかってるよという方は③まで読み飛ばしてください！</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><code>_jumpSpeed</code>：ジャンプの強さ（大きいほど高く跳ぶ）。<strong>インスペクターで強さを調整します。</strong>（15くらいがおすすめ）<br><code>_groundMask</code>：<strong>「床」と判定するレイヤー</strong>を指定します。（Floorなど）<strong>インスペクターで <code>Floor</code> レイヤーを選びます。</strong></p>



<p>✅ 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>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>ここでは<br><strong>プレイヤーのColliderが取得できているか</strong>を確認しています。</p>



<p>もし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>ここでは<br>**プレイヤーのコライダーの範囲（サイズ・位置）**を取得しています。</p>



<p><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>つまりプレイヤーの大きさ、プレイヤーの位置を取得しています。</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>ここでは<br><strong>地面を判定する位置</strong>を決めています。</p>



<p>ポイントはここです。<br><strong>b.min.y</strong></p>



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



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



<p>【<strong>イメージ</strong>】</p>



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



<p>各引数の意味はこちら。</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><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>プレイヤーは四角いことが多いですよね。</p>



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



<p>Raycast（線）だと、</p>



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



<p>→ ちょっとズレると判定ミスします。</p>



<p>でも BoxCast なら：</p>



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



<p>足元全体をチェックできるので安定しやすくなります🚶</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>BoxCastが</p>



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



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



<p>になります。<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>ここでは、</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>という状態を設定しています。</p>



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



<p>⬇️他にも、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>速度を直接指定でき、瞬時に移動させることが出来るのが特徴です。</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><strong>メリット</strong>・・・操作が安定する（毎回同じ動き）、細かい制御がしやすい横移動との相性が良い<br><strong>デメリット</strong>・・・物理感は少し薄れる、慣性が消える（急に止まる）</p>



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



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



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



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



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



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



<p><strong>「床」</strong>と判定する<code>Floor</code> レイヤーを追加します。</p>



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



<p>１．どのオブジェクトでもいいのでクリックし、「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>４．その空欄に <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>ここまで設定したらジャンプ処理の完成です！</p>
</div></div>



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



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



<p>↓ジャンプが動かない、挙動が変な場合は以下を確認してみてください！</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>✅ 対処：<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>✅ 対処：<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>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>今回の処理は次の流れになっています。</p>



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



<p>この処理によって</p>



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



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



<p>が実現できます！！</p>



<p>今回は、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>最後まで読んでいただきありがとうございました！</p>
</div></div>



<p>他にも、<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 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/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2026/03/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity2D】プレイヤーを追従させるカメラを作るには？｜実装方法（コード全文・解説付き）</div><div class="blogcard-snippet internal-blogcard-snippet">Unityで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.14</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 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/02/Unityで2Dアクションゲームを作ろう！のコピー-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2026/02/Unityで2Dアクションゲームを作ろう！のコピー-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2026/02/Unityで2Dアクションゲームを作ろう！のコピー-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2026/02/Unityで2Dアクションゲームを作ろう！のコピー-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】歩行アニメーションの作り方｜Animatorで「待機⇔歩く」を切り替えよう</div><div class="blogcard-snippet internal-blogcard-snippet">こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖今回は 2Dキャラの「歩行」時のアニメーションを を Unity で作る方法を解説します！手順としては、待機、歩行用の画像を用意するAnimation Clip（歩くアニメ）を作成す...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.02.08</div></div></div></div></a>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/unity2d%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/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>【Unity入門⑪】2Dアクションゲームで効果音を鳴らそう！</title>
		<link>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ab%e3%80%912d%e3%82%a2%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%b2%e3%83%bc%e3%83%a0%e3%81%a7%e5%8a%b9%e6%9e%9c%e9%9f%b3%e3%82%92%e9%b3%b4%e3%82%89%e3%81%9d/</link>
					<comments>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%ab%e3%80%912d%e3%82%a2%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%b2%e3%83%bc%e3%83%a0%e3%81%a7%e5%8a%b9%e6%9e%9c%e9%9f%b3%e3%82%92%e9%b3%b4%e3%82%89%e3%81%9d/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Mon, 17 Nov 2025 14:18:16 +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>
		<category><![CDATA[敵]]></category>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=422</guid>

					<description><![CDATA[前回の入門では「敵を踏んで倒す処理」を実装しました！ 今回はそのアクションに効果音（SE）を追加して、より臨場感を出していきます！具体的には、 というタイミングでSEをつけていきます！ SEの鳴らす方法方は色々あると思い [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-10 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/2026/04/9327DB85-EFD6-4A95-A63A-1FA1F0A35E85.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



<p>前回の入門では「敵を踏んで倒す処理」を実装しました！</p>



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

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



<p><br>今回はそのアクションに<strong>効果音（SE）</strong>を追加して、より臨場感を出していきます！<br>具体的には、</p>



<ul class="wp-block-list">
<li>「ジャンプした時」</li>



<li>「敵にぶつかってダメージを受けたとき」</li>



<li>「敵を上から踏んで再ジャンプしたとき」</li>
</ul>



<p>というタイミングでSEをつけていきます！</p>



<p>SEの鳴らす方法方は色々あると思いますが、今回は<strong>AudioSource と PlayOneShot を使った、簡単にできる方法</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-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">①AudioSourceを追加する</a><ol><li><a href="#toc3" tabindex="0">手順</a></li></ol></li><li><a href="#toc4" tabindex="0">②効果音ファイルを準備する</a></li><li><a href="#toc5" tabindex="0">③効果音を呼び出す処理を書く</a></li><li><a href="#toc6" tabindex="0">④AudioSource、音声ファイルをアタッチする</a></li><li><a href="#toc7" tabindex="0">動作確認</a></li><li><a href="#toc8" 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>敵にぶつかってダメージを受けたときに「ダメージ音」を出す</li>



<li>敵を上から踏んで再ジャンプしたときにも効果音を出す<br><video controls="" src="https://naiterukaiju.com/wp-content/uploads/2025/11/無題のビデオ-‐-Clipchampで作成-9-1.mp4"></video></li>
</ul>



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



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



<p>Unityで効果音を鳴らすには、主に次の2つを使います。</p>



<ul class="wp-block-list">
<li><strong>AudioSource</strong><br>音を再生するためのコンポーネント</li>



<li><strong>AudioClip</strong><br>実際の音声データ</li>
</ul>



<p>ざっくり言うと、<strong><span class="marker-under-red">AudioClipが音のデータ、AudioSourceがその音を鳴らす再生機</span></strong>です。</p>



<h3 class="wp-block-heading"><span id="toc3">手順</span></h3>



<p>以下の手順で、<strong>AudioSourceコンポーネント</strong>を追加します！</p>



<p>１．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>３．<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>勝手に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="toc4">②効果音ファイルを準備する</span></h2>



<ol class="wp-block-list">
<li>効果音を管理するフォルダを作り、その中に使用するSEファイル（.wavや.mp3）をいれます
<ul class="wp-block-list">
<li> &nbsp;<code>Assets/Audio/</code>SEなど</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="404" height="293" src="https://naiterukaiju.com/wp-content/uploads/2025/11/image-3.png" alt="効果音ファイルのフォルダ" class="wp-image-1261" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/image-3.png 404w, https://naiterukaiju.com/wp-content/uploads/2025/11/image-3-300x218.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/11/image-3-376x273.png 376w" sizes="(max-width: 404px) 100vw, 404px" /></figure>



<p>今回は、ジャンプ音、ダメージ音を例に進めます！</p>



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



<h2 class="wp-block-heading"><span id="toc5">③効果音を呼び出す処理を書く</span></h2>



<p>Playerスクリプトに、効果音を鳴らす処理を書いていきます！<br>（★今回追加・・・前回入門記事から追加した処理です）</p>



<p>以下のタイミングにSEを鳴らす処理を追加します。</p>



<ul class="wp-block-list">
<li>敵を上から踏んで再ジャンプしたとき</li>



<li>敵にぶつかってダメージを受けたとき</li>
</ul>



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

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

    // 敵に触れたときの処理
    private void _HitEnemy(GameObject enemy)
    {
        // 処理省略
        // ① プレイヤーが敵の上からぶつかった場合（踏んだとき）
        if (playerBottom >= enemyTop)
        {
          // 処理省略
          // ジャンプ効果音（踏んだときも再利用OK）
            if (_jumpSE != null)
                _audioSource.PlayOneShot(_jumpSE);　// ★今回追加
        }
        // ② 横や下からぶつかった場合（ダメージを受ける）
        else
        {
            // 処理省略
            // ダメージ時の効果音を鳴らす
            if (_damageSE != null)
               audioSource.PlayOneShot(_damageSE);　// ★今回追加
        }
    }
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">using</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">UnityEngine</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">using</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">UnityEngine</span><span style="color: #D4D4D4">.UI;</span></span>
<span class="line"><span style="color: #569CD6">using</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">UnityEngine</span><span style="color: #D4D4D4">.InputSystem;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #9CDCFE">public</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">Player</span><span style="color: #D4D4D4"> : </span><span style="color: #4EC9B0">MonoBehaviour</span></span>
<span class="line"><span style="color: #D4D4D4">{</span></span>
<span class="line"><span style="color: #D4D4D4">    &#91;</span><span style="color: #9CDCFE">SerializeField</span><span style="color: #D4D4D4">&#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 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">_damageSE</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: #569CD6">private</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">_HitEnemy</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">GameObject</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">enemy</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">    {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// 処理省略</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// ① プレイヤーが敵の上からぶつかった場合（踏んだとき）</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">playerBottom</span><span style="color: #D4D4D4"> &gt;= </span><span style="color: #9CDCFE">enemyTop</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">        {</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #6A9955">// 処理省略</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #6A9955">// ジャンプ効果音（踏んだときも再利用OK）</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">_jumpSE</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">_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 style="color: #6A9955">// ★今回追加</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// ② 横や下からぶつかった場合（ダメージを受ける）</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">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: #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">_damageSE</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">audioSource</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">PlayOneShot</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">_damageSE</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>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<p>以下のタイミングにSEを鳴らす処理を追加します。</p>



<ul class="wp-block-list">
<li>ジャンプしたとき</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>    //　ジャンプ処理
    public void _OnJump(InputAction.CallbackContext context)
    {
        // 処理省略
        // ジャンプ時の効果音を鳴らす
        if (_jumpSE != null)
        {
            _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: #D4D4D4">    </span><span style="color: #6A9955">//　ジャンプ処理</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><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: #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">_jumpSE</span><span style="color: #D4D4D4"> != </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">        {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">_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 style="color: #6A9955">// ★今回追加</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span></code></pre></div>



<p><strong><span class="marker-under-blue">_audioSource.PlayOneShot()</span></strong>という処理で、指定した音を1回だけ再生するようにしています。<br>今回はこの <strong>PlayOneShot</strong> を使うことで、シンプルに効果音を鳴らしています！</p>



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



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



<p>１．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>３．ソース上で定義した「JumpSE」、「_damageSE」に、音声ファイルをそれぞれドラッグします</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>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-10 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/2026/04/9327DB85-EFD6-4A95-A63A-1FA1F0A35E85.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ここまで設定すれば全て完了です！</p>
</div></div>



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



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



<p>ゲームを再生し、動作確認する</p>



<figure class="wp-block-video"><video height="480" style="aspect-ratio: 852 / 480;" width="852" controls src="https://naiterukaiju.com/wp-content/uploads/2025/11/無題のビデオ-‐-Clipchampで作成-9-1.mp4"></video></figure>



<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><tr><td>敵に横から当たる</td><td>HPバーが減ってダメージ音</td></tr></tbody></table></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>効果音をつけることでより2Dアクションゲームらしさが出てきました！</p>
</div></div>



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



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



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



<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>最後まで読んでいただきありがとうございました！</p>
</div></div>



<p>今回は、Unityで効果音を鳴らす基本として、PlayOneShot を使った方を紹介しました。<br>効果音を追加すると、ジャンプやダメージなどの動きがわかりやすくなり、ゲームらしさも一気にアップします！<br>まずは今回の方法でシンプルに音を鳴らせるようになっておくと、今後ほかの効果音も追加しやすくなります！<br><br>この記事が少しでもゲーム制作のお役に立てたら嬉しいです🦖<br>次回の記事では、ゲーム内<strong>で<span class="marker-under-red">BGMを自動再生</span></strong>する方法を解説します！</p>



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

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

			</item>
		<item>
		<title>【Unity入門④】プレイヤーをジャンプさせる処理を作ろう！</title>
		<link>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a3%e3%80%91%e3%82%b8%e3%83%a3%e3%83%b3%e3%83%97%e5%87%a6%e7%90%86%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86/</link>
					<comments>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a3%e3%80%91%e3%82%b8%e3%83%a3%e3%83%b3%e3%83%97%e5%87%a6%e7%90%86%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86/#respond</comments>
		
		<dc:creator><![CDATA[怪獣]]></dc:creator>
		<pubDate>Tue, 23 Sep 2025 23:16:52 +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>
		<guid isPermaLink="false">https://naiterukaiju.com/?p=162</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>こんにちは！夜の街2Dアクションゲームを制作中の怪獣です🦖</p>
</div></div>



<p>前回はプレイヤーの移動に合わせて顔の向きを変更させる方法の解説をしました。今回は <strong>ジャンプ</strong>を作っていきます！</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a2%e3%80%91%e3%82%ad%e3%83%a3%e3%83%a9%e3%82%af%e3%82%bf%e3%83%bc%e3%81%ae%e9%a1%94%e3%81%ae%e5%90%91%e3%81%8d%e3%82%92%e5%a4%89%e3%81%88%e3%82%8b%e5%87%a6/" title="【Unity入門③】キャラクターの顔の向きを変える処理を作ろう" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門③】キャラクターの顔の向きを変える処理を作ろう</div><div class="blogcard-snippet internal-blogcard-snippet">前回の記事では、キャラクターを左右に歩かせる処理を実装しました。今回は「キャラクターの顔の向きを移動方向に合わせる処理」を追加していきます！↓実装後イメージ↓実装の流れ① 移動方向を確認するキャラクターが 右に動いているのか、左に動いている...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.09.21</div></div></div></div></a>
</div>



<p>ジャンプ処理自体はシンプルに作れますが、ジャンプ後の制御も行わないと空中でも無限ジャンプできてしまいます。<br>この記事では Input Systemを使用した<span class="marker-under-red"><strong>「接地中だけジャンプ可能」</strong> </span>な仕組みを作る方法を紹介します！<br>まずは <strong>InputAction を設定してから</strong>、スクリプト側に処理を書いていきます📝</p>



<p><strong>↓実装イメージ↓</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="426" height="240" src="https://naiterukaiju.com/wp-content/uploads/2025/09/無題のビデオ-‐-Clipchampで作成-3.gif" alt="ジャンプする動画" class="wp-image-189"/></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">① Input Systemを導入する</a></li><li><a href="#toc3" tabindex="0">② Actions アセットの設定（Jump を作る）</a></li><li><a href="#toc4" tabindex="0">③ Player Input でイベントを結びつける</a></li><li><a href="#toc5" tabindex="0">④ ジャンプ処理を書く</a></li><li><a href="#toc6" tabindex="0">⑤ Floor レイヤーの作成</a><ol><li><a href="#toc7" tabindex="0">新しいレイヤーを作る</a></li><li><a href="#toc8" tabindex="0">床オブジェクトに Floor レイヤーを割り当てる</a></li><li><a href="#toc9" tabindex="0">Ground MaskにFloorレイヤーを割り当てる</a></li></ol></li><li><a href="#toc10" tabindex="0">⑤ 動作確認</a></li><li><a href="#toc11" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">事前準備しておくこと</span></h2>



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



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



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



<h2 class="wp-block-heading"><span id="toc2">① Input Systemを導入する</span></h2>



<p>まずInput Systemが導入されていない方は、インストールをする必要があります。<br>（※既に導入済みの方は、②までスキップしてください！）</p>



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



<p>Unityでキャラクターを動かすときに必要なのが<br><strong>「プレイヤーの入力（キーボードやコントローラー）」を取得する仕組み</strong>です。</p>



<p>その仕組みが <strong>Input System</strong> です。<br>ざっくり言うと、</p>



<p> <strong>「プレイヤーの操作をゲームに伝える仕組み」</strong>です。</p>



<p>例えば…</p>



<ul class="wp-block-list">
<li>←キー → キャラが左に動く</li>



<li>スペースキー → ジャンプ</li>



<li>ゲームパッド → スティックで移動</li>
</ul>



<p>こういった入力をまとめて扱うのが<strong> Input System</strong> です。</p>



<p>実際に処理を書いていく前に、どのキーやボタンでどんな動作をするかを設定するために、まずは<strong>Input System</strong>をインストールする必要があります。</p>



<p>１．メニューから Window → Package Manager を開く</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="528" src="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135313-1024x528.png" alt="Package Managerの選択" class="wp-image-96" srcset="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135313-1024x528.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135313-300x155.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135313-768x396.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135313-1536x793.png 1536w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135313.png 1911w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>２．Unity Registry を選択する</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="527" src="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135504-1024x527.png" alt="Unity Registryの選択" class="wp-image-97" srcset="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135504-1024x527.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135504-300x154.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135504-768x395.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135504-1536x790.png 1536w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135504.png 1917w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>３．Input System をインストール。再起動を求められたら Yes を選んで再起動する</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="528" src="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135652-1024x528.png" alt="Installを選択" class="wp-image-100" srcset="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135652-1024x528.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135652-300x155.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135652-768x396.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135652-1536x792.png 1536w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-15-135652.png 1919w" 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>これで新しいInput Systemが使えるようになります！</p>
</div></div>



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



<h2 class="wp-block-heading"><span id="toc3">② Actions アセットの設定（Jump を作る）</span></h2>



<p>ボタン操作を設定するために、まずは歩行時と同様に、<strong>Input Action</strong>の追加からしていきます。<br><strong>スペースキーを押したらジャンプ</strong>するように設定していきます。</p>



<ol class="wp-block-list">
<li><code>PlayerControls.inputactions</code> を開き、<strong>Action Map</strong> を <code>Player</code> に</li>



<li><strong>Actions</strong> に以下を用意
<ul class="wp-block-list">
<li><code>Jump</code>（Action Type: <strong>Button</strong> ）</li>
</ul>
</li>



<li><strong>Bindings</strong> を追加
<ul class="wp-block-list">
<li>Keyboard: <code>Space</code>（スペースキーにジャンプ処理を設定します）</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="703" src="https://naiterukaiju.com/wp-content/uploads/2025/09/image-10-1024x703.png" alt="Input Actionの設定" class="wp-image-164" srcset="https://naiterukaiju.com/wp-content/uploads/2025/09/image-10-1024x703.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/09/image-10-300x206.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/09/image-10-768x528.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/09/image-10.png 1035w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="605" src="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-21-222426-1024x605.png" alt="Spaceの選択" class="wp-image-168" srcset="https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-21-222426-1024x605.png 1024w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-21-222426-300x177.png 300w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-21-222426-768x454.png 768w, https://naiterukaiju.com/wp-content/uploads/2025/09/スクリーンショット-2025-09-21-222426.png 1181w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>保存して閉じます。</p>



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



<h2 class="wp-block-heading"><span id="toc4">③ Player Input でイベントを結びつける</span></h2>



<ol class="wp-block-list">
<li>Player Input の<strong>Events</strong> を展開
<ul class="wp-block-list">
<li>「＋」を押し、Playerオブジェクトをドラッグ</li>



<li><code>No Function</code>&nbsp;をクリックし、<code>Player → <strong><code>_OnJump</code></strong></code>を選択</li>
</ul>
</li>
</ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>これで「スペースキーが押されたら <code>_OnJump</code>が呼ばれる」ようになります📝</p>
</blockquote>



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



<h2 class="wp-block-heading"><span id="toc5">④ ジャンプ処理を書く</span></h2>



<p><code>Player.cs</code> に <strong>ジャンプ処理</strong> を追加していきます📝<br>移動や向き変更と同じく、<code>Update()</code> の中で毎フレーム状態をチェックし、入力があればジャンプできるようにします。</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"/>



<ul class="wp-block-list">
<li>Updateで毎フレーム <code>_HitFloor()</code> を呼び出して、今着地しているかどうかを判定します。</li>



<li>BoxCastを使用しキャラの足元が床に触れたか、当たり判定を調べています</li>



<li><code><strong>_groundMask</strong></code> は「床」と判定するレイヤーを指定します。<strong>後の手順④で解説していますが、インスペクターで <code>Floor</code> レイヤーを選びます。</strong></li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-10 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://naiterukaiju.com/wp-content/uploads/2026/04/9327DB85-EFD6-4A95-A63A-1FA1F0A35E85.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>各処理の詳しい説明は以下の記事で解説しています。ご興味あれば覗いてみてください🦖</p>
</div></div>



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

<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="160" height="90" /></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>



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



<p><strong>「床」</strong>と判定する<code>Floor</code> レイヤーを追加します。</p>



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



<p>１．どのオブジェクトでもいいのでクリックし、「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>４．その空欄に <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="toc8">床オブジェクトに 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="toc9">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="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>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>ここまで設定したらジャンプ処理の完成です📝</p>
</blockquote>



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



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



<ol class="wp-block-list">
<li>床オブジェクトに <strong>Floorレイヤー</strong> を設定</li>



<li>Playerのインスペクターで <strong>Ground Mask = Floor</strong> に指定</li>



<li>再生して Spaceキーを押す
<ul class="wp-block-list">
<li>接地中：ジャンプできる</li>



<li>空中：何度押しても無視される</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="426" height="240" src="https://naiterukaiju.com/wp-content/uploads/2025/09/無題のビデオ-‐-Clipchampで作成-3.gif" alt="ジャンプする動画" class="wp-image-189"/></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>重力の調整<br>➡️Rigidbody2D→Gravity Scale を大きくすると、重力が強くなり落下が速くなります。</p>
</blockquote>



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



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



<ul class="wp-block-list">
<li><code>BoxCast</code> を使った接地判定で無限ジャンプを防止</li>



<li><code>_bJump</code> フラグで空中中はジャンプ不可に制御</li>



<li>Input Systemでシンプルに「押した瞬間だけ」ジャンプ実行</li>
</ul>



<p>これで無限ジャンプを防いだ基本ジャンプ処理が完成です！<br>次はいよいよマップ作成の解説をします！</p>



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

<a href="https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a4%e3%80%91tilemap%e3%81%a7%e3%83%9e%e3%83%83%e3%83%97%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86/" title="【Unity入門⑤】Tilemapでマップを作ろう" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2025/11/Unityで2Dアクションゲームを作ろう！-1-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity入門⑤】Tilemapでマップを作ろう</div><div class="blogcard-snippet internal-blogcard-snippet">今回からいよいよ「マップづくり」に挑戦します。Tilemapを使えば、床や地形をペイント感覚で配置できるので、ステージ制作が一気に楽になります🦖↓実装イメージ↓この記事でやることTilemapを作成して床タイルを描くTilemapColli...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.09.28</div></div></div></div></a>
</div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://naiterukaiju.com/%e3%80%90unity%e5%85%a5%e9%96%80%e2%91%a3%e3%80%91%e3%82%b8%e3%83%a3%e3%83%b3%e3%83%97%e5%87%a6%e7%90%86%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
