---
title: "レッスン 3.1 - ジャンプ力"
content_type: tutorial
url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp?language=ja"
language: ja
difficulty: beginner
duration_minutes: 90
unity_version:
  - "2021.3"
  - "2021.2"
  - "2021.1"
  - "2020.3"
  - "2020.2"
  - "2020.1"
  - "2019.4"
  - "2019.3"
  - "2019.2"
  - "2019.1"
  - "2018.4"
supported_unity_versions:
  - name: "2021.3"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2021.3"
  - name: "2021.2"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2021.2"
  - name: "2021.1"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2021.1"
  - name: "2020.3"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2020.3"
  - name: "2020.2"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2020.2"
  - name: "2020.1"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2020.1"
  - name: "2019.4"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2019.4"
  - name: "2019.3"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2019.3"
  - name: "2019.2"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2019.2"
  - name: "2019.1"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2019.1"
  - name: "2018.4"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja&version=2018.4"
available_languages:
  - name: "en"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-2.md?language=en"
  - name: "es"
    url: "https://learn.unity.com/tutorial/leccion-3-1-fuerza-de-salto.md?language=es"
  - name: "ja"
    url: "https://learn.unity.com/tutorial/lesson-3-1-jump-force-jp.md?language=ja"
  - name: "ko"
    url: "https://learn.unity.com/tutorial/3-1gang-jeompeuryeog.md?language=ko"
last_updated: "2026-08-04T14:23:41.000Z"
---

# レッスン 3.1 - ジャンプ力

プレイヤーキャラクターがスペースバー入力でジャンプし、生成される障害物を避けるシンプルなランナー型プロトタイプを作成します。

**概要：**

このレッスンの目的は、このプロトタイプの基本的なゲームプレイを設定することです。まず、新しいプロジェクトを作成し、スターターファイルをインポートします。次に、美しい背景とプレイヤーが操作するキャラクターを選択し、スペースバーを押すとそのキャラクターがジャンプするようにします。また、プレイヤーに対する障害物を選択し、一定の間隔でプレイヤーの進路に障害物を放り込むスポーンマネージャーを作成します。

**プロジェクトの成果物：**

好みのキャラクター、背景、障害物を設定します。障害物が画面の端に出現してプレイヤーの進路を塞ぐので、プレイヤーはスペースバーを押してキャラクターをジャンプさせてそれを避けることができるようにします。

## Materials

- [Prototype 3 - Asset Store](https://assetstore.unity.com/packages/templates/tutorials/create-with-code-prototype-3-run-and-jump-146039)
- [Prototype 3 - Direct Download.zip](<https://unity-connect-prd.storage.googleapis.com/20191004/b3882104-93e8-44a1-901c-eb8c0a3f7845/Prototype 3 - Direct Download.zip>)

## 1. 概要

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/85561848-5994-44bf-a66f-b0bd0acfc735_CWC_Intro_3_1.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220215/f2a976d2-945f-4656-b4cf-ce45e2bed067_CWC_U3.L1.S0_Intro.CF.ja__1_.vtt))

## 2. プロトタイプを開き、背景を変える

> _まず新しいプロジェクトを立ち上げ、スターターファイルをインポートし、ゲームの背景を選択します。_

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/d6941c3f-fecc-4285-a058-83f92fdfd641_CWC_U3.L1.S1.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20200723/9e222b79-656d-4e27-a833-a101675c63bd_CWC_U3.L1.S1.vtt.vtt))

1. **Unity Hub** を開き、コースディレクトリに新しく「Prototype 3」プロジェクトを作成する
2. **リンク**をクリックして Prototype 3 のスターターファイルにアクセスし、**ダウンロードして Unity にインポート**する
3. Prototype 3 シーンを開き、**Sample シーン**を保存せずに**削除**する
4. ヒエラルキーで **Background オブジェクト**を選択し、_Sprite Renderer コンポーネント の Sprite で、\_City、\_Nature、\_Town_ のいずれかの画像を選択する

## 3. プレイヤーキャラクターを選び、設定する

> _プロジェクトを開始して背景を選択しました。次はプレイヤーが操作するキャラクターの設定を行いましょう。_

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/0a316ab5-d47d-4def-be49-7d043e7f1535_CWC_U3.L1.S2.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220215/f04c44e4-2757-416b-befa-ded31539799c_CWC_U3.L1.S2_T1_v02.CF.ja__1_.vtt))

1. Course Library > Characters から、キャラクターを 1 つヒエラルキーに**ドラッグ**し、「Player」に**名前を変更**してから、Y 軸で**回転させて**右を向かせる
2. **Rigid Body** コンポーネントを追加する
3. **ボックスコライダー**を追加し、コライダーの境界を**編集**する
4. Assets 内に新しく「Scripts」フォルダーを作成し、その中に「PlayerController」スクリプトを作成して、それをプレイヤーに**アタッチ**する

## 4. スタート時にプレイヤーをジャンプさせる

> _今まではゲームオブジェクト全体か Transform コンポーネントに対してしかメソッドを呼び出していませんでした。プレイヤーにかかる力や重力をもっとコントロールしたい場合は、プレイヤーの Rigidbody コンポーネントのメソッドを呼び出す必要があります。_

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/a2d7c5fa-4092-4782-b3dd-ffda9d4b85ce_CWC_U3.L1.S3.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220215/3bc249c1-4d3e-42f4-ad08-7a6ac352064e_CWC_U3.L1.S3_T1_v02.CF.ja.__3_.vtt))

1. **PlayerController.cs** で、新しく **_private Rigidbody playerRb;_**変数を宣言する
2. **_Start()_** で **_playerRb = GetComponent\<Rigidbody>();_** と初期化する
3. **_Start()_** で AddForce メソッドを使用して、ゲームの開始時にプレイヤーをジャンプさせる

![](https://connect-mediagw.unity.com/h1/20190529/learn/images/4afd900b-4152-4d3c-abdc-992e5697784c_3.1_3.PNG)

## 5. スペースバーが押された時にプレイヤーをジャンプさせる

> _プレイヤーがスタート時にジャンプしますが、これは望んだ挙動ではありません。スペースバーを押して、ジャンプするよう指示したときだけジャンプさせるようにしましょう。_

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/6f03317d-6e27-4b64-9c14-f79783137f9e_CWC_U3.L1.S4.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220215/d4d347b9-0bc0-4cc0-b666-b9a320ce5028_CWC_U3.L1.S4_T1_v02.CF.ja__1_.vtt))

1. **Update()** にスペースバーが押されたかどうかをチェックする **if-then 文**を追加する
2. Start() の AddForce のコードを**切り取って** if 文のブロック中に**貼り付ける**
3. **_ForceMode.Impulse_** パラメーターを **_AddForce_** の呼び出しに追加して、力に掛ける数を**小さくする**

![](https://connect-mediagw.unity.com/h1/20190529/learn/images/d4821e78-6086-485e-97a4-570dcf9117db_3.1_4.PNG)

## 6. ジャンプ力と重力を調整する

> _ジャンプの力、シーンの重力、キャラクターの質量などを調整して、プレイヤーにきれいなジャンプをさせましょう。_

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/dce0dd2e-cd2a-4889-a619-f6e27fe02792_CWC_U3.L1.S5.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220215/935f4651-f4e3-408d-92f6-8dcc2c6c8fab_CWC_U3.L1.S5_T1_v02.CF.ja__1_.vtt))

1. 新しく **_public float jumpForce_** 変数を作り、ハードコードされた値を**置き換える**
2. 新しく **_public float gravityModifier_** 変数を追加し、**_Start()_** に **_Physics.gravity \*= gravityModifier;_** を追加する
3. インスペクターで、**_gravityModifer_**、**_jumpForce_**、**_Rigidbody_** の mass の値を微調整して、楽しくプレイできる感触にする

![](https://connect-mediagw.unity.com/h1/20190529/learn/images/e03247cb-f20f-4dab-848f-f4e34c506296_3.1_5.PNG)

## 7. プレイヤーが二重ジャンプしないようにする

> _すでにお気づきかもしれませんが、プレイヤーはスペースバーを何度も叩くと、キャラクターをものすごい勢いで飛び上がせることができます。このおかしな挙動をなくしてジャンプをより現実的なものにするためには、ジャンプする前にプレイヤーが地面に接していることを確認する if 文が必要です。_

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/f70b35b3-761e-43dc-8869-1db87e156ecc_CWC_U3.L1.S6.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220215/caa5f7d6-11d7-470b-9270-d93228dbddbc_CWC_U3.L1.S6_T1_v02.CF.ja__1_.vtt))

1. 新しく **_public bool isOnGround_** 変数を追加し、**_true_** に設定する
2. プレイヤーをジャンプさせる if 文で **_isOnGround = false_** を設定してから、**テストする**
3. **if 文**の条件に「**_&& isOnGround_**」を追加する
4. 新しく **_void onCollisionEnter()_** メソッドを追加し、そのメソッドで **_isOnGround = true_** と設定し、テストする

![](https://connect-mediagw.unity.com/h1/20190529/learn/images/3d31760d-3084-431c-a738-bc4810209ba4_3.1_6.PNG)

## 8. 障害物を作り、左に動かす

> _プレイヤーは空中をジャンプするようになりました。ここで何か飛び越えるものを置いてみましょう。これまでに慣れ親しんだコードを使って、障害物のインスタンスを作り、プレイヤーの動く先に配置してみましょう。_

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/49816e12-99ad-43ed-808d-62a95bd8cef0_CWC_U3.L1.S7.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220215/5cc4c8ff-d922-4c3f-8e5d-afd78cae47e7_CWC_U3.L1.S7_T1_v02.CF.ja__1_.vtt))

1. _Course Library > Obstacles_ から障害物を追加し、「Obstacle」と名前を変更し、出現させる**位置**に配置する
2. **Rigid Body** と **Box Collider** コンポーネントを適用し、障害物の形に合うようにコライダーの境界を**編集する**
3. 新しく「_Prefabs_」フォルダーを作成し、Obstacle をドラッグして新しく**オリジナルのプレハブ**を作成する
4. 新しく「MoveLeft」スクリプトを作成し、障害物に**適用して開く**
5. MoveLeft.cs で、speed 変数に応じて左に**移動する**コードを記述する
6. MoveLeft スクリプトを**背景**に適用する

![](https://connect-mediagw.unity.com/h1/20190529/learn/images/60af2eb2-0332-45eb-be29-c72108019604_3.1_7.PNG)

## 9. スポーンマネージャーを作る

> _前回のプロジェクトと同様に、障害物のプレハブのインスタンスを作る空のオブジェクト Spawn Manager を作成しましょう。_

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/16dfc09b-8fe6-48b3-bea5-7823ea050300_CWC_U3.L1.S8.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220215/a1787743-41e9-494b-8afe-c7611bdb4d36_CWC_U3.L1.S8_T2_v02.CF.ja__1_.vtt))

1. 新しく「Spawn Manager」という名前の空のオブジェクトを作成し、そのオブジェクトに新しく作った **SpawnManager.cs** スクリプトを適用する
2. **SpawnManager.cs** で、新しく **_public GameObject obstaclePrefab;_** を宣言し、インスペクターの新しい変数にプレハブを**割り当てる**
3. 新しく **_private Vector3 spawnPos_** を宣言し、障害物を出現させる位置で初期化する
4. **_Start()_** で新しい障害物プレハブの**インスタンスを作る**ようにして、シーンからプレハブを**削除**してテストする

![](https://connect-mediagw.unity.com/h1/20190529/learn/images/1f74a89b-4926-46f8-9d8f-5c2501df76ba_3.1_8.PNG)

## 10. 一定間隔で障害物を出現させる

> _いま、スポーンマネージャーはゲーム開始時にプレハブのインスタンスを作ります。新しい関数を書いて、タイマーで障害物を出現させるようにしたいのですが、それには InvokeRepeating を使う必要があります。また、キャラクターの RigidBody を変更して、倒されないようにしなければなりません。_

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/f60a09c4-63ad-4c22-a14b-05958ab02851_CWC_U3.L1.S9.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220215/5c09f451-cb34-4de8-a7f1-3a1474497b83_CWC_U3.L1.S9_T1_v02.CF.ja__1_.vtt))

1. 新しい **_void SpawnObstacle_** メソッドを作成し、その中に **Instantiate** の呼び出しを移動させる
2. 新しく、**_startDelay_** と **_repeatRate_** という名前の **float 型変数**を作成する
3. **_InvokeRepeating()_** メソッドを使用して、障害物を**間隔**をおいて出現させるようにする
4. Player の Rigid Body コンポーネントの **Constraints** を展開し、Y 軸方向の位置以外のすべての位置を**フリーズ**する

![](https://connect-mediagw.unity.com/h1/20190529/learn/images/40062f1c-4fc6-4dd9-8884-8adc9e603a9b_3.1_9.PNG)

## 11. レッスンのまとめ

[Video](https://connect-mediagw.unity.com/h1/20200723/videos/b270247a-d5e8-42ef-8e89-b3711012b6e9_CWC_U3.L1.SRecap.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220215/4ea724dd-19a6-4a38-8877-404be6fe214f_CWC_U3.L1.SRecap_T1_v03.CF.ja__1_.vtt))

新機能：

- スペースバーを押すとプレイヤーがジャンプする
- プレイヤーの二重ジャンプの抑止
- 障害物と左に動く背景
- 一定間隔で障害物を出現させる

新しい概念とスキル：

- GetComponent
- ForceMode.Impulse
- Physics.Gravity
- Rigidbody の制約
- Rigidbody 変数
- ブーリアン
- 乗算/割り当て（「\*」）演算子
- 論理積（&&）演算子
- OnCollisionEnter()

次のレッスン：

- 背景を左に動かすことで生まれたおかしな演出を、コードを使って常にスクロールするように修正します。
