<?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/%E7%9D%80%E5%9C%B0%E5%88%A4%E5%AE%9A/feed/" rel="self" type="application/rss+xml" />
	<link>https://naiterukaiju.com</link>
	<description>Unityでゲームを作る方法を初心者目線で発信👾</description>
	<lastBuildDate>Tue, 14 Apr 2026 13:49:23 +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>【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 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 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>この記事では <span class="marker-under-red"><strong>「接地中だけジャンプ可能」</strong> </span>な仕組みを作る方法を紹介します！<br>まずは <strong>InputAction を設定してから</strong>、スクリプト側に処理を書いていきます📝</p>



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



<figure class="wp-block-image size-full"><img fetchpriority="high" 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-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">①Actions アセットの設定（Jump を作る）</a></li><li><a href="#toc2" tabindex="0">②Player Input でイベントを結びつける</a></li><li><a href="#toc3" tabindex="0">③ジャンプ処理を書く</a></li><li><a href="#toc4" tabindex="0">④Floor レイヤーの作成</a><ol><li><a href="#toc5" tabindex="0">新しいレイヤーを作る</a></li><li><a href="#toc6" tabindex="0">床オブジェクトに Floor レイヤーを割り当てる</a></li><li><a href="#toc7" tabindex="0">Ground MaskにFloorレイヤーを割り当てる</a></li></ol></li><li><a href="#toc8" tabindex="0">⑤ 動作確認</a></li><li><a href="#toc9" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">①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="toc2">②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="toc3">③ジャンプ処理を書く</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】プレイヤーをジャンプさせる方法｜（コード全文・解説付き）" 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/↑作成したUIをドラッグする-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://naiterukaiju.com/wp-content/uploads/2026/03/↑作成したUIをドラッグする-160x90.png 160w, https://naiterukaiju.com/wp-content/uploads/2026/03/↑作成したUIをドラッグする-120x68.png 120w, https://naiterukaiju.com/wp-content/uploads/2026/03/↑作成したUIをドラッグする-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でプレイヤーをジャンプさせたいけど、ジャンプのさせ方が分からないジャンプが高くなりすぎる 連続ジャンプしてしまう 地面判定がうまくいかないといったことはありませんか？この記事では、ジャンプさせる実装法(解説付き)、二重ジャンプ...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://naiterukaiju.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">naiterukaiju.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.03.01</div></div></div></div></a>
</div>



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



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



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



<p>どのオブジェクトでもいいのでクリックし、「Inspector」ウィンドウを確認<br>「Layer」の右端にあるプルダウンをクリック → 一番下の 「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="Add Layerの選択" 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="Layerの設定" 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="toc6">床オブジェクトに 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="toc7">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="toc8">⑤ 動作確認</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 fetchpriority="high" 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="toc9">まとめ</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 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 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>
