---
title: "ラボ 3 - プレイヤーのコントロール"
content_type: tutorial
url: "https://learn.unity.com/tutorial/lab-3-player-control-jp?language=ja"
language: ja
difficulty: beginner
duration_minutes: 60
unity_version:
  - "2022.3"
  - "2022.2"
  - "2022.1"
  - "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: "2022.3"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2022.3"
  - name: "2022.2"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2022.2"
  - name: "2022.1"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2022.1"
  - name: "2021.3"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2021.3"
  - name: "2021.2"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2021.2"
  - name: "2021.1"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2021.1"
  - name: "2020.3"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2020.3"
  - name: "2020.2"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2020.2"
  - name: "2020.1"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2020.1"
  - name: "2019.4"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2019.4"
  - name: "2019.3"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2019.3"
  - name: "2019.2"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2019.2"
  - name: "2019.1"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2019.1"
  - name: "2018.4"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja&version=2018.4"
available_languages:
  - name: "en"
    url: "https://learn.unity.com/tutorial/lab-3-player-control.md?language=en"
  - name: "es"
    url: "https://learn.unity.com/tutorial/laboratorio-3-control-del-jugador.md?language=es"
  - name: "ja"
    url: "https://learn.unity.com/tutorial/lab-3-player-control-jp.md?language=ja"
  - name: "ko"
    url: "https://learn.unity.com/tutorial/silseub-3-peulreieo-jeeo.md?language=ko"
last_updated: "2026-08-04T14:21:48.000Z"
---

# ラボ 3 - プレイヤーのコントロール

プレイヤーの基本的な移動と制限コードを自分で調査・実装し、動作を検証しながら完成させます。

**概要：**

このレッスンでは、プレイヤーの基本的な動きを制限するコードを含め、プレイヤーの基本的な動きをプログラムします。プレイヤーを動かす方法はプロジェクトの種類に応じてさまざまな方法が考えられるため、どのように実装するかについてのステップバイステップの指示はありません。これを行うためには、リサーチをしたり、他のコードを参照したり、上手く動かないときは問題を解決したりする必要があります。

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

プレイヤーがユーザーの入力に基づいて動き回るようになり、かつ、入っていってはいけないところには動けなくなります。

## 1. 導入

[Video](https://connect-mediagw.unity.com/h1/20200724/videos/056717d5-2e1b-4b17-a6e8-00f149824d59_CWC_Intro_lab_3.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220202/2b1be576-2a7f-4c85-86b8-d1dd4dc89a39_CWC_Intro_lab_3.ja.vtt))

## 2. PlayerController を作成し、コードを計画する

> プレイヤーがどのような動きをするかに関わらず、必ず PlayerController スクリプトが必要になります。

[Video](https://connect-mediagw.unity.com/h1/20200724/videos/88b563d6-a1f9-4b4d-98ea-af7769e73db1_CWC_Lab3.S1.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220505/733209dd-0b7c-4c0e-bae7-130d1a144b76_123_Lab_3_Create_PlayerController_and_plan_your_code.en.vtt))

1. プレイヤーを選択し、**Rigidbody** コンポーネントを追加します。
2. 「Assets」フォルダに新しく「Scripts」フォルダーを作成します。
3. 新しい「Scripts」フォルダー内に、新しく「PlayerController」C#スクリプトを作成します。
4. スクリプトをプレイヤーに**アタッチ**してから**開きます**。
5. プレイヤーに必要なプログラミングの種類を決めます。

このステップを終えたら、新しいスクリプトを開いて、その中に何を書くのか、しっかりとした計画を立てなければなりません。

## 3. ユーザー入力から基本的な動作をさせる

> まず最初にプログラムするのは、ユーザーの入力に基づいたプレイヤーの非常に基本的な動きです。

[Video](https://connect-mediagw.unity.com/h1/20200724/videos/4a96a2c9-5cd4-4780-b6c3-39e7a073fae8_CWC_Lab3.S2.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220505/474f77a6-19a5-40c9-b1f8-979bad789874_124_Lab_3_Basic_movement_from_user_input.en.vtt))

1. 新しく **private float speed 変数**を宣言します。
2. 物理を使用する場合は、新しく **Rigidbody playerRb 変数**を宣言し、Start() で初期化します。
3. 矢印キーを使用する場合は、新しく **verticalInput** 変数および **horizontalInput** 変数を宣言します。
4. キーを押したことに基づいた動きをする場合は、**if 文**を作成して **KeyCode** をテストします。
5. **_Translate_** メソッドまたは **_AddForce_** メソッド（物理を使用している場合）を使用して、キャラクターを移動します。

このステップを終えると、ユーザーの入力に基づいて、プレイヤーを望みの方向に動かせるようになっているはずです。

## 4. プレイヤーの動きを制限する

> プレイヤーがどのような動きをしていても、ゲームプレイに合わせた制限をかける必要があります。

[Video](https://connect-mediagw.unity.com/h1/20200724/videos/7c8e1e0b-4403-4ce6-8d3b-d4df404babf8_CWC_Lab3.S3.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220505/cd5fdee7-69a5-44ac-9857-e1b6d19cd1d6_125_Lab_3_Constrain_the_Players_movement.en.vtt))

1. プレイヤーが衝突してはいけないオブジェクト（地面を含む）に衝突している場合は、Collider コンポーネントの「**Is trigger**」ボックスの状態をチェックしてください。
2. プレイヤーの位置や回転を制約する場合は、Rigidbody コンポーネントで**制約**を展開し、特定の軸について制約をかけます。
3. プレイヤーが**画面の外**に出ていってしまう場合は、**if 文**に位置を確認してリセットするようなコードを書いてください。
4. プレイヤーが二段ジャンプをしたり画面外へ飛んでいってしまう場合、**ブーリアン変数**を作ってユーザーのできる操作に制限を与えます。
5. プレイヤーがプレイエリアの外側に沿って物理的な障壁によって制約を受ける必要がある場合は、プリミティブの**平面**や**立方体**を作成し、それらを拡大縮小して壁を形成します。

このステップを終えると、プレイヤーの動きにはゲームがまともにプレイできるような適切な制限を加えられているはずでず。

## 5. コードを整理して、バックアップをエクスポートする

> これで基本的な機能が動作するようになったので、コードを整理してバックアップを作成しましょう。

[Video](https://connect-mediagw.unity.com/h1/20200724/videos/b7792b71-9c5f-4dc2-8bc9-e33d81447d37_CWC_Lab3.S4.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220505/15523eca-758c-4f41-824a-1c152db756f8_126_Lab_3_Code_Cleanup_and_Export_Backup.en.vtt))

1. 新しく**空**のゲームオブジェクトを作成し、その中にオブジェクトを入れ子構造を作り、ヒエラルキーを**整理**します。
2. コードブロックを新しい void 関数に移動して、Update メソッドをクリーンアップします（例：「MovePlayer()」や「ConstraintPlayerPosition()」など）。
3. コメントを追加してコードを読みやすくします。
4. すべてが正常に動作することを確認するために**テストを行い**、シーンを**保存**します。
5. Assetsフォルダーを右クリックして「**Export Package**」を選んでパッケージをエクスポートし、新しいバージョンを **Backups** フォルダーに保存します。

このステップを終えると、コードには適切にコメントが付けられ、整理され、バックアップができた状態になっているはずです。

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

[Video](https://connect-mediagw.unity.com/h1/20200724/videos/5ff210de-7e03-4808-9670-3c04f226f285_CWC_Lab3.SRecap.mp4) ([Transcript (ja_jp)](https://connect-mediagw.unity.com/h1/20220202/71de780f-50a4-483d-880c-ad0b78187c4c_CWC_Lab3SRecap.ja.vtt))

新しい進捗：

- ユーザーの入力に基づいてユーザーが移動できる
- プレイヤーの動きがゲームの要件に合わせて制約されている

新しい概念とスキル：

- C#を使って自分の手でプログラミングをする
- 問題のトラブルシューティングを自分の手で行う
