初心者必見!現場レベルの「ゲーム制作講座PDF」を無料プレゼント中!▶

Unityでジャンプを実装 | 2Dの地面判定つき

Unity ゲーム制作実践

ジャンプボタンを押すたびにキャラが浮き上がる——でも、空中でも何度もジャンプできてしまう。

2Dアクションでジャンプを作るとき、多くの初心者がここでつまずきます。
力を加える処理自体は簡単ですが、地面にいるときだけジャンプできる条件を付け忘れると、操作感が一気に崩れます。

この記事では、UnityのRigidbody2Dを使ったジャンプ実装を、地面判定とセットで整理します。
079の移動と組み合わせれば、プラットフォーマーの土台が完成します。

  • ジャンプ力を変えても、高さが思ったとおりにならない
  • 空中でもジャンプできてしまい、操作がチートみたいになる
  • 足場の端で接地判定がブレて、ジャンプが出ないことがある

✨ この記事でわかること

  • velocity変更とAddForceの使い分け
  • OverlapCircleによる地面判定の実装
  • 重力スケールとジャンプ力の調整手順
  • 空中ジャンプを防ぐisGroundedフラグ
  • 手触りの良い値の探し方
  • 初心者でも理解できる解説

\プログラミング未経験でも大丈夫!まずは1本作り切ろう/

初心者が最初に選ぶならコレ

Unity ノンフィールドRPG
+スレスパ風JRPG講座

★★★★★ (Unity6対応)

Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。

講座を見てみる \ゼロからでもスマホ対応RPGが作れる!/

憧れのアクションゲームに挑戦

Unity 2Dアクションゲーム
の作り方講座(ロックマン風)

★★★★★ (スマホ化・広告実装)

初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。

講座を見てみる \初心者でも本格ACTが完成する!/

3Dゲーム開発の入口はここ

ゼルダ風3Dアクションゲーム
の作り方講座

★★★★★ (スマホ化対応)

「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。

講座を見てみる \初心者でも全16回で3Dゲームが完成!/

ジャンプ実装の2つの方式

2Dジャンプには、主に次の2パターンがあります。

方式 書き方 向いている場面
velocity直接変更 rb.velocity.y = jumpForce 高さが一定で、調整しやすい定番方式
AddForce rb.AddForce(Vector2.up * force, ForceMode2D.Impulse) 連続的な力を加えたいとき。
質量の影響を受ける

初心者はvelocity直接変更から始めるのがおすすめです。
InspectorでjumpForceを変えれば、すぐに高さの違いを体感できます。

地面判定つきジャンプのコード

プレイヤー足元にgroundCheck(空のGameObject)を置き、OverlapCircleで地面レイヤーと接触しているか調べます。

using UnityEngine;

public class JumpController2D : MonoBehaviour
{
  public float jumpForce = 12f;
  public Transform groundCheck;
  public float groundRadius = 0.15f;
  public LayerMask groundLayer;
  private Rigidbody2D rb;
  private bool isGrounded;

  void Awake => rb = GetComponent<Rigidbody2D>;

  void Update
  {
    isGrounded = Physics2D.OverlapCircle(
      groundCheck.position, groundRadius, groundLayer);

    if (Input.GetButtonDown("Jump") && isGrounded)
      rb.velocity = new Vector2(rb.velocity.x, jumpForce);
  }
}

足場オブジェクトのLayerを「Ground」にし、Physics2DのLayer Collision Matrixでプレイヤーと衝突するよう設定してください。
groundCheckは足の先、groundRadiusは0.1〜0.2程度が目安です。

管理人
管理人

SceneビューでgroundCheckを選び、Gizmosで判定円を表示すると調整が楽です。
足場の角でジャンプが出ないときは、半径を少し大きくしてみてください。

重力とジャンプ力の調整

ジャンプの「高さ」と「滞空時間」は、jumpForceとRigidbody2DのGravity Scaleの組み合わせで決まります。

  • 高く飛ばしたい → jumpForceを上げる、またはGravity Scaleを下げる
  • キビキビ跳びたい → jumpForceを下げ、Gravity Scaleを上げる
  • ふわっと跳びたい → jumpForceは中程度、Gravity Scaleは低め

調整はPlayモード中にInspectorの値を変えながら行い、気持ちよく感じる組み合わせをメモしておきましょう。
フレームレートに依存させないため、移動処理にはTime.deltaTimeを掛ける習慣も大切です。

Raycastで地面を調べる方法

OverlapCircleの代わりに、足元から短いRaycastを飛ばす方法もあります。

isGrounded = Physics2D.Raycast(
  groundCheck.position, Vector2.down, 0.1f, groundLayer);

距離0.1fは足場との隙間があればfalseになるため、キャラが地面から少し浮いているときの誤判定を防ぎやすくなります。

二段ジャンプと coyote time(発展)

基本の接地ジャンプが安定したら、二段ジャンプは空中で追加ジャンプできる回数を数える方式で足せます。
jumpCount変数を用意し、接地時にリセット、空中でJump入力時にカウントを減らすだけです。

またcoyote time(足場から離れた直後の短い猶予でジャンプ可能にする)は、操作感をやわらげる定番テクニックです。
isGroundedがfalseになってから0.1秒ほどはジャンプを許可する、という実装が多いです。
まずは1段ジャンプを固めてから挑戦してください。

ジャンプ調整の手順
  • STEP1
    Rigidbody2Dを設定

    Gravity Scale 3、Collision Detection を Continuous に
  • STEP2
    地面判定を実装

    groundCheck + OverlapCircle + Groundレイヤー
  • STEP3
    jumpForceを調整

    Play中に12前後から試し、高さと速度のバランスを探す
  • STEP4
    横移動と合体

    079の移動スクリプトと同一オブジェクトで動作確認
  • STEP5
    足場でテスト

    端・段差・穴の手前でジャンプが安定するか確認

079移動スクリプトとの統合

ジャンプと横移動を1つのPlayerControllerにまとめると管理しやすくなります。
Update内で先に横移動を処理し、そのあとジャンプ入力を判定する順番が定番です。

左右の向きをスプライトで表現する場合は、移動方向に応じてtransform.localScale.xの符号を反転させます。
ジャンプ中も向きが変わらないよう、接地時または移動入力があるときだけ反転するのが自然です。

Animatorを使う場合は、Speed(横移動の絶対値)とIsGrounded、Jumpトリガーをパラメータに渡すと、走り・待機・ジャンプのアニメが切り替わります。
まずはアニメなしで数値だけ動かし、操作感が固まってから足しましょう。

つまずきやすいポイント

ジャンプ実装でよくある問題は次のとおりです。

  • 空中ジャンプ → isGrounded判定が常にtrue。
    groundLayerの設定ミスを確認
  • ジャンプが低すぎる → Rigidbody2DのMassが大きい、Gravity Scaleが高すぎる
  • 足場の角で引っかかる → CapsuleCollider2Dを使い、Physics Material 2Dで摩擦0

Input System(新入力)を使っている場合は、Input.GetButtonDown(“Jump”)の代わりに、ジャンプアクションのWasPressedThisFrameを呼び出します。
旧Input Managerとの混在は避けましょう。

管理人
管理人

ジャンプの気持ちよさが決まるまで、敵や攻撃は後回しで大丈夫です。
076の1ステージで「穴を1つ飛び越えられる」まで調整するのが、いちばん効率のよい練習ですよ。

記事を読んで「作ってみたい!」と思ったら!初心者でも1本完成できる講座で実力をつけよう

知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。プログラミング未経験からでも取り組める講座で、ゲーム開発の第一歩を踏み出しましょう。

Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!初心者でもデッキ構築×JRPGをスマホ向けに作れる!】

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座

  • Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
  • Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
  • 初心者でも迷わず進められる丁寧な解説構成
  • ノンフィールドRPGとデッキ構築JRPGの2つをまとめて学べるセット講座

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、プログラミング未経験の初心者でも取り組みやすい、ステップバイステップ形式の講座です。

Unity6対応・スマホ化対応の最新カリキュラムで、読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。

「何から始めればいいかわからない…」という初心者が最初に選ぶ一本として最適な講座です。

Unity6対応・スマホ化対応の最新カリキュラム
ゼロからでもRPGを完成させよう
→ スレスパ風デッキ構築JRPG講座を見てみる
初心者でもスマホ対応のRPGが作れる!まずは1本完成を目指そう!

Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!初心者でもスマホ化・広告実装まで対応した本格横スクロールACTが作れる!】

Unity 2Dアクションゲームの作り方講座(ロックマン風)

  • ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
  • 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
  • スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
  • 敵AI15体・多彩なマップギミック・武器システムを完全実装
  • 完全オリジナルゲームをアセット不使用で素材提供付きで制作

Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。

全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。

「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。

スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!

ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

ゼルダ風3Dアクションゲームの作り方講座

  • ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
  • 「3Dは難しそう」と感じている初心者でも取り組みやすい丁寧な解説構成
  • スマホ化対応で実機で動かせるゲームが完成
  • アセットを使った実践的なゲーム開発手法が身につく
  • 画像・動画・全ソースコード公開の充実したサポート

ゼルダ風3Dアクションゲームの作り方講座は、「3Dゲームは難しそう…」と感じている初心者こそおすすめの入門講座です。

全16回の丁寧な解説で、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを確実に完成まで導きます。スマホ化対応で実機で動かせるため、初めて3Dゲームを作り上げた達成感がひときわ大きい講座です。

「3Dゲームを自分でも作れるか試してみたい」という初心者の最初の一歩として最適です。

初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の壁を一気に突破しよう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
全16回でスマホで動くオリジナル3Dゲームを完成させよう!

まとめ

Unityの2Dジャンプは、velocityで上方向の速度を与える → 地面判定で空中ジャンプを防ぐ → Gravity ScaleとjumpForceで手触りを調整、この3点を押さえれば動きます。
079の横移動と合体させ、076のプラットフォーマーステージで試すのが近道です。

カメラ追従は077、攻撃とHPは080・081で戦闘ループがつながります。
ジャンプからステージ完成まで動画で追いたい方は、Unity入門の森の2Dアクション講座も参考になります。
今日は地面判定付きでジャンプが1回だけ出るところまで進めてみてください。

コメント

タイトルとURLをコピーしました