【初心者向け】Unity 2Dゲームのジャンプ方法を複数紹介!【サンプルあり】

九十九すい

こんにちは!九十九すいです!Unityの2Dゲームで役に立つジャンプする方法をいくつか教えてもらうよ!

こんな疑問をもったあなたにおすすめ!
  • Unityでキャラクターをジャンプさせる方法が知りたい!
  • ジャンプを制限する簡単な方法は?
  • ジャンプ力を調整したい!

Unityでは『ジャンプの回数制限』や『ジャンプ力の調整』など、一口にジャンプと言っても様々な実装法があります。

この記事では『単純な1回きりのジャンプ』から『連続でジャンプ』、『ジャンプ力の調整』方法までを解説します。

完成イメージ

たとえば『スーパーマリオブラザーズ』のようなアクションゲームでは、比較的ゆっくりとした上昇と下降をするように実装されています。

チャリ走』では1回のジャンプ力を小さくしたり、すぐに落下させるといった制御になっています。

単純なジャンプ1つでもゲームによって使い分けることがベストなのです。

この記事でいくつかの種類を使い分けられるようにしてみてください。

またUnityを早く効率よく使いこなせるようになりたいなら、Udemyの動画学習が時短にもなるのでおすすめです!

プログラミングをITスクールで学ぶのはメリットも多いですが、一番のネックは値段です。

「自分に合わなかったらどうしよう」「学ぶプログラミング言語を変えられない」などの悩みはつきません。

そのため、まずは気軽に始められ、初心者でもスムーズに学習ができるUdemyの講座を試してみるのをおすすめします!

Udemy一般的な
ITスクール
値段1,500円~
※毎月割引あり
平均
100,000円以上
講座数210,000講座以上平均10コースほど
受講時間
(期間)
約10~[h]
(最短1日から)
約200[h]
(平均2~3ヶ月)
講師への質問講座によるできる
Udemyと一般的なITスクールの比較

UDEMYAFF10 を使用すると 10% オフ

30日以内なら返金無料!

目次

Unity ジャンプの実装方法【簡単:5ステップ】

Unity ジャンプの実装方法

Unityで2Dキャラクターをジャンプさせる方法はいくつかあります。

ここでは最も基本的な方法を紹介しますので、初めてでもすぐにジャンプ機能をゲームに追加することができます。

C#とは・・・JavaやC++などと同じ、プログラミング言語の1つです。Webサービスやアプリ開発、ゲーム開発等に使用されています。C++よりも簡単で、プログラムも少なくて済む利点があります。

九十九すい

Unityでは少ないプログラムでも動かすことができるから、まずはやってみることが肝心だよ!

1|キャラクターを準備

ジャンプさせたいキャラクターの画像をUnityに取り込み、表示させます。

キャラクターを準備
キャラクター準備
  • 取り込みたい画像を「Assets」にドラッグ・アンド・ドロップ
  • 「Assets」にある画像を「Scene」もしくは「Herarchy」へドラッグ・アンド・ドロップ

準備はたったこれだけで完了です。

とーるくん

このキャラクターの画像はぼくです!ぼくが”異世界”を冒険する小説『つくもの語り』の連載をしていますので、ぜひご覧ください!

2|キャラクターに物理法則・当たり判定を付与

このままでは、画像をUnity上に表示させただけになってしまいます。

なので、キャラクターに「物理法則(Rigidbody 2D)」「当たり判定(Box Collider 2D)」を付与していきます。

物理法則(Rigidbody 2D)の追加

キャラクターに物理法則・当たり判定を付与
物理法則(Rigidbody 2D)の追加
  • 先ほどUnityに取り込んだキャラクターを「Hierarchy」で選択
  • インスペクター下部にある「Add Component」の中から、「Rigidbody 2D」を追加

この操作でキャラクターに物理法則を適用することができます。

具体的には重力が働くようになるので、キャラクターが下に向かって落下します。

当たり判定(Box Collider 2D)の追加

当たり判定(Box Collider 2D)の追加

物理法則を追加したときとやり方はほとんど同じです。

当たり判定(Box Collider 2D)の追加
  • 先ほどUnityに取り込んだキャラクターを「Hierarchy」で選択
  • インスペクター下部にある「Add Component」の中から、「Box Collider 2D」を追加

こうすることでキャラクターが当たり判定を持ち、他のオブジェクトにぶつかることができるようになりました。

九十九すい

「Box Collider 2D」を追加しないと、地面に触れることができずに落下していってしまうよ…

3|地面になるBoxを準備

このままではキャラクターが落下するだけですので、キャラクターを立たせるための地面を用意します。

地面のBoxを準備
地面の追加
  • 「Hierarchy」の上で右クリック
  • 開いたメニューから「2D Object」を選択
  • 「Sprites」を選択
  • 「Square」を選択

これでUnityの画面上に、地面になる白い箱が表示されます。

この作成したBoxの名称を「Box」から「Floor」に変更してください。
地面の当たり判定処理のプログラムで使用します。

箱をクリックすると四方に青い点が表示されますので、それを調節することで大きさを変えることができます。

地面の大きさを調節できたところで、地面には「当たり判定(Box Collider 2D)」を設定します。

地面のBoxを準備2
当たり判定(Box Collider 2D)を設定
  • 「Floor」を「Hierarchy」で選択
  • インスペクター下部にある「Add Component」の中から、「Box Collider 2D」を追加

こうすることで地面が当たり判定を持ち、キャラクターのための足場になりました。

とーるくん

地面には物理法則を設定する必要はありません!
設定すると地面まで落ちていってしまいます!

4|ジャンプスクリプト(C#)の作成

最後に、スペースキーを押すことでキャラクターがジャンプするプログラムを実装します。

ジャンプスクリプト(C#)の作成

最初にプログラムをするための「C#」ファイルを作ります。

下記の順で操作をします。

「C#」ファイルの作り方
  • 「Assets」の上で右クリック
  • 出てきたメニューの中から「Create」を選択
  • 「C# Script」を選択
  • 作成したC#ファイルは「PlayerJump」と名称をつける

作成したファイルを開き、下記プログラムを入力してください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerJump : MonoBehaviour
{
    //キャラクターの状態を入れる箱を用意
    public Rigidbody2D chara;
    //キャラクターのジャンプ力の設定
    public float jumpForce = 10f;


    void Start()
    {
        //キャラクターの状態を取得
        chara = GetComponent<Rigidbody2D>();
    }


    void Update()
    {
        //スペースキーを押されたかどうかを判定
        if (Input.GetButtonDown("Jump") )
        {
            //キャラクターにジャンプさせる
            chara.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);
        }
    }
}

このプログラムはスペースキーの挙動を取得し、押されたときにキャラクターをジャンプさせる内容です。

次に作成したC#のファイルをキャラクターに実装させます。

ジャンプスクリプト(C#)の作成2
C#ファイルをキャラクターに実装
  • ジャンプさせたいオブジェクトを「Herarchy」で選択し
  • 作成したC#のファイル「PlayerJump」を、キャラクターのインスペクターへドラッグ・アンド・ドロップ

これで完了です。

Unityで実行させる(再生ボタン押す)とキャラクターに物理法則が付与され、スペースキーを押すとジャンプするようになりました。

ジャンプスクリプト(C#)の作成3

「▶」のボタン以外に、ショートカットキーのWin「Ctrl + P」、Mac「⌘ + P」で実行できます。

5|ジャンププログラム実行画面

このプログラムでは無限にジャンプできてしまい、キャラクターが画面外へ出てしまっています。

その対策であるジャンプ回数の制限を次で紹介します。

九十九すい

このプログラムが何をしているのかは、Udemyでしっかりと理解しておいた方が良いよ!

UDEMYAFF10 を使用すると 10% オフ

30日以内なら返金無料!

ジャンプ回数の制限方法

ジャンプ回数の制限方法

キャラクターがジャンプするようになったものの、このままでは無限にジャンプし続けてしまいます。

ジャンプする回数を制限して、キャラクターが飛びすぎないようにしましょう。

下記プログラムには、先程のプログラムに「地面にいるかどうかの判定」を追加しています。

これで1回ジャンプしたら地面に着地するまで、ジャンプできなくなるのです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerJump0 : MonoBehaviour
{
    //キャラクターの状態を入れる箱を用意
    public Rigidbody2D chara;
    //キャラクターのジャンプ力の設定
    public float jumpForce = 10f;
    //地面にいるかどうかの判定設定
    private bool isGrounded;

    void Start()
    {
        //キャラクターの状態を取得
        chara = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        //スペースキーを押されたかどうかを判定
        if (Input.GetButtonDown("Jump") )
        {
            //キャラクターにジャンプさせる
            chara.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);
            //ジャンプしたら、地面から離れたと判定
            isGrounded = false;
        }
    }

    // 地面に触れているかの判定
    void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.CompareTag("Floor"))
        {
            isGrounded = true;
        }
    }
}

変数「isGrounded」がキャラクターが地面にいるかどうかを判定している情報を入れる箱になっています。

「OnCollisionEnter2D」では、キャラクターが他のオブジェクトに接触したときに呼び出される処理を記述しています。

// 他のオブジェクトと接触したら呼び出される
    void OnCollisionEnter2D(Collision2D other)
    {
        //接触したオブジェクトの名前が「Floor」だったら作動する
        if (other.gameObject.CompareTag("Floor"))
        {
            //地面と接触していると判定
            isGrounded = true;
        }
    }
とーるくん

このプログラムの内容が難しいと感じる方は、
すぐに見直せる書籍から読み解くのもオススメですよ!

ジャンプ力の調整方法

ジャンプ力の調整方法

実装するゲームによっては、ジャンプ挙動を変更したいと思います。

数値を変えるだけでできる、2つパターンの方法を紹介します。

与える力(例:jumpForce)の数値を変更する方法

先程のプログラムの最初の方に「public float jumpForce = 10f;」の記述があります。

与える力(例:jumpForce)の数値を変更する

この「10f」がキャラクターのジャンプ力になります。

この「f」はFloat(フロート)のFであり、小数点まで扱う数字であるという記述がされているのです。

「10f」を「100f」や「0.5f」などの数字に変更することで、ジャンプ力を変更することができます。

キャラクターに働く重力を変更する方法

キャラクターに働く重力を変更することで、ふんわりとしたジャンプやすぐに落下するジャンプなどの制御ができます。

キャラクターに働く重力の変更方法
重力の変更方法
  • 重力を調整したいオブジェクトを選択
  • 「Rigidbody 2D」の「Gravity Scale」の数値を変更

デフォルトは「1」になっていますので、数値を増やすことで重力を強く、減らすことで弱くできます。

九十九すい

これらの数値を変更して、
つくりたいゲームに適したジャンプを探してみてね!

ジャンプを実装したサンプル

ジャンプを実装したサンプル

ここまでの内容を元に作成した、スペースキーを押すことでジャンプするプログラムです。

左の「Gravity Scaleを0.5」に右の「Gravity Scaleを5」にしています。

ジャンプ力は「10f」のままです。

とーるくん

重力が強いと全然ジャンプできません…

九十九すい

基本的に重力が弱い、落下が遅い挙動のほうが遊びやすいゲームになるね!さらにUnityを極めたい方には『Udemy』がおすすめだよ!

Udemy

画像引用元:udemy 公式HP
画像引用元:udemy 公式HP

おすすめ度:
公式サイト:udemy.com

評価項目評価
費用
受講スタイル
コースの種類・内容
受講サポート
就職支援

『Udemy』の強みは何と言っても、213,000以上のコースがオンラインで気軽に学べることにあります。

Unityにとどまらず、Python(パイソン)やマーケティング、ビジネススキルまで網羅しているため未経験の方でも、お手軽に始めやすいですがオンラインが主体なのでどうしも挫折率は上がると思います。

すでにある程度のスキルがある方や仕事の幅を広げたい方におすすめのスクールです。

UDEMYAFF10 を使用すると 10% オフ

30日以内なら返金無料!

Unity 2D ジャンプのよくある質問

Q&A

Unityで2Dゲームのキャラクターをジャンプさせる方法は?

Unityで2Dゲームのキャラクターをジャンプさせる基本的な方法は、Rigidbody2Dコンポーネントをキャラクターに追加して、スクリプトを使って上向きの力を加える方法です。

ジャンプさせる手順
  • キャラクターにRigidbody2Dコンポーネントを追加
  • 新しいC#スクリプトを作成し、キャラクターにセット
  • スクリプト内で、例えば「Input.GetKeyDown(KeyCode.Space)」を使ってジャンプキーを設定
  • ジャンプキーが押されたら、「Rigidbody2D.AddForce(new Vector2(0, jumpForce))」を使って上向きの力を加えます

Unityでジャンプの回数を制限するにはどうすればいいですか?

ジャンプの回数を制限するには、ジャンプした回数をカウントしておく方法があります。

ジャンプ回数を制限する手順
  • スクリプト内にジャンプカウンターと最大ジャンプ回数を設定する変数を用意
  • 地面に触れているかどうかを検出するロジックを追加し、地面に触れている時にジャンプカウンターをリセット
  • ジャンプするたびにカウンターをプラスし、カウンターが最大ジャンプ回数以下のときのみジャンプを許可

ジャンプ力を調整する方法は?

ジャンプ力を調整するには、スクリプト内でジャンプ力を決定する変数(例: jumpForce)の値を変更することで簡単に調整できます。

【結論】Unityなら2Dゲームの醍醐味のジャンプをあっという間に実装できる!

この記事のまとめ
  • Unityでジャンプを実装するには、オブジェクト(キャラクター)とC#(スクリプト)が必要!
  • ジャンプを制限するなら、地面の接触判定を使うと簡単!
  • ジャンプ力は変数(例: jumpForce)の数値で調整できる!

Unityで2Dゲームのキャラクターをジャンプさせる方法には様々なアプローチがあります。

基本的なジャンプの実装から、ジャンプの制限、さらにはジャンプ力の調整方法までを幅広くカバーしました。

Unityでは、少ないコードで大きな機能を実装できるので、初心者でも挑戦しやすいのが魅力です。

プログラミングは実際に手を動かしてみることが一番の学びになります。

この記事を参考にしながら、あなたのゲームにジャンプ機能を取り入れてみて、さらなる発見や改善点を見つけてみてください。

Udemyの動画講座では、製品レベルのゲームをつくることができる講座がたくさんあります。

まずは気軽に学んでみたい方にはとてもおすすめです!

Udemyであなたのつくりたいゲームをつくるチャンスを掴んでみませんか!

UDEMYAFF10 を使用すると 10% オフ

30日以内なら返金無料!

TechMoire(テックモワ)では、web3(AI / メタバース)やITスクールの情報などを中心に情報を発信しております。

もしよければ、X(@TechMoire)のフォローなどもよろしくお願いします。

一緒に最新技術を楽しんでいきましょう!

九十九すい

それでは、ありがとうございました! 

管理者情報

ITコンサルタント

あらき きりん

現役ITコンサルタント 兼 Webディレクターとして従事。2015年に未経験からITスクールに入学。その後、EdTech企業にて、IT講師として大手企業や個人受講生に向けた授業(Webデザイン、プログラミング、マーケティング、ディレクションなど)を担当。スクールキャリアカウンセラーとして、述べ1,000人以上のキャリアサポートや授業を経験。現在は、IT系メディアの運営や企業ITサポート、Web制作をしながら、web3についての情報を発信しています。本メディアの記事はすべて、わたしが監修しています。

  • URLをコピーしました!
目次