はじめに
Unityを使って、自分だけの2Dアクションゲームを作ってみませんか?「でも、プログラミングって難しそう…」と思うかもしれません。でも大丈夫!この記事では、初心者でも簡単に作れる2Dアクションゲームの作り方をステップごとに分かりやすく解説します。
今回作るのは、プレイヤーが動き回り、敵をよけながらゴールを目指すシンプルな2Dアクションゲームです。Unityの基本的な操作や、キャラクターの動かし方、敵の配置方法など、ゲーム作りの基本をしっかり学べる内容になっています。
使用するアセット
ゲームに必要な画像(プレイヤー・床・敵など)は、Unityアセットストアの**「Simple 2D Platformer Assets Pack」**を使用します。無料で使えるので、まだ持っていない方は以下のリンクからダウンロードしておきましょう!
🔗 Simple 2D Platformer Assets Pack
作るゲームのイメージ
この記事では、以下のような基本的な動作を実装します。
✅ プレイヤーを作成し、動かせるようにする
✅ 床を作り、プレイヤーが落ちないようにする
✅ 敵を配置し、動かす
✅ 簡単な当たり判定を実装する
この内容をマスターすれば、自分だけのオリジナル2Dアクションゲームを作るための土台ができるはずです!それでは、さっそくゲーム作りを始めていきましょう!
この記事では、Unityで2Dアクションゲームを一から作る方法を解説しますが、
「Corgi Engine」 を使えば、
すぐにプロレベルのアクションゲームを作れるテンプレートが揃っています!
ぜひアセットストアもチェックしてみてください!
2. プレイヤーを作成
ゲームの主役となるプレイヤーキャラクターを作成していきます。今回は、四角形のスプライトを使用してプレイヤーを作り、画像を設定してキャラクターとして見た目を整えます。また、**物理演算(Rigidbody2D)と当たり判定(BoxCollider2D)**を追加し、重力や衝突判定を適用していきます。
おすすめのアセット
① プレイヤーオブジェクトの作成
まずは、ヒエラルキーウィンドウでプレイヤーの基本オブジェクトを作成します。
- Hierarchyウィンドウを開く
Unityエディタの左側にあるHierarchyウィンドウを開きます。 - 2Dオブジェクトを作成
右クリック → 「2D Object」→ 「Sprites」→ 「Square」 を選択し、新しいスプライトを作成します。 - 名前を「Player」に変更
作成したオブジェクトの名前を「Player」に変更しましょう。 - 画像を設定
Inspectorウィンドウの「Sprite」に、用意したプレイヤー用の画像をドラッグ&ドロップします。

② 物理演算(Rigidbody2D)の追加
次に、プレイヤーに**物理演算(重力)**を適用します。これを行うことで、プレイヤーが自然に下方向へ落ちるようになります。
- 「Player」オブジェクトを選択
ヒエラルキーウィンドウで「Player」をクリックします。 - Rigidbody2Dを追加
Inspectorウィンドウで「Add Component」ボタンをクリックし、「Rigidbody2D」を検索して追加します。 - 設定を調整
- Gravity Scale(重力の強さ): デフォルトのままでOK(1.0)
- Constraints(制約): 「Freeze Rotation(Z軸の回転を固定)」にチェックを入れる(プレイヤーが回転しないようにする)

✅ Rigidbody2Dを追加すると、プレイヤーは自然に重力で下に落ちるようになります!
③ 当たり判定(BoxCollider2D)の追加
プレイヤーが床や敵と衝突できるようにするため、当たり判定(BoxCollider2D)を追加します。
- 「Player」オブジェクトを選択
ヒエラルキーウィンドウで「Player」をクリックします。 - BoxCollider2Dを追加
Inspectorウィンドウで「Add Component」ボタンをクリックし、「BoxCollider2D」を検索して追加します。 - 当たり判定の確認
- BoxCollider2Dを追加すると、緑色の枠が表示されます。
- これがプレイヤーの当たり判定の範囲になります。
- 必要に応じて**Size(サイズ)やOffset(位置)**を調整できます。

④ 設定の確認
ここまでの設定が完了したら、一度ゲームを実行してみましょう!
🔹 プレイヤーに重力が適用されているか?
✅ これでプレイヤーの基本設定が完了しました!
次のステップでは、床の設定を行い、プレイヤーがしっかりと地面に立つようにしていきます!
3. 床(フィールド)を作成
プレイヤーが落ちずに立てる床(フィールド)を作成します。
床を作ることで、プレイヤーが重力で落ちてもしっかりと地面で止まるようになります。
また、当たり判定を追加して、床の上を歩けるように設定していきます。
① 床オブジェクトの作成
まずはヒエラルキーウィンドウで床(フィールド)を作成しましょう。
- Hierarchyウィンドウを開く
Unityエディタの左側にあるHierarchyウィンドウを開きます。 - 2Dオブジェクトを作成
右クリック → 「2D Object」→ 「Sprites」→ 「Square」 を選択し、新しいスプライトを作成します。 - 名前を「Floor」に変更
作成したオブジェクトの名前を「Floor」に変更しましょう。 - 画像を設定
Inspectorウィンドウの「Sprite」に、用意した床用の画像をドラッグ&ドロップします。

② 床の大きさと位置を調整
次に、床の大きさや位置を調整し、プレイヤーが歩けるサイズに変更します。
- 「Floor」オブジェクトを選択
ヒエラルキーウィンドウで「Floor」をクリックします。 - Inspectorウィンドウで「Transform」を調整
- Position(位置):
X = 0, Y = -3
(プレイヤーの下に配置) - Scale(サイズ):
X = 5, Y = 0.5
(横に長く、薄い形に)
- Position(位置):

✅ これで床が横に広がり、プレイヤーが乗れるようになります!
③ 当たり判定(BoxCollider2D)の追加
プレイヤーが床に接触し、しっかりと止まるように**当たり判定(BoxCollider2D)**を追加します。
- 「Floor」オブジェクトを選択
ヒエラルキーウィンドウで「Floor」をクリックします。 - BoxCollider2Dを追加
Inspectorウィンドウで「Add Component」ボタンをクリックし、「BoxCollider2D」を検索して追加します。 - 当たり判定の確認
- BoxCollider2Dを追加すると、緑色の枠が表示されます。
- これが床の当たり判定の範囲になります。
- 必要に応じて**Size(サイズ)やOffset(位置)**を調整できます。

✅ BoxCollider2Dを追加すると、プレイヤーが床に落ちたときに止まるようになります!
④ 設定の確認
ここまでの設定が完了したら、一度ゲームを実行してみましょう!
🔹 プレイヤーが床の上に落ちて止まるか?
🔹 床の大きさが適切であるか?
✅ これで床(フィールド)の作成が完了しました!
次のステップでは、敵の作成と移動処理の実装を行っていきます!
4. 敵を配置
次に、ゲームに敵キャラクターを配置していきます。
プレイヤーが動き回るだけではゲームとして物足りないので、敵を配置して緊張感を持たせましょう!
また、敵には物理演算や当たり判定を追加して、プレイヤーとぶつかるように設定します。
① 敵オブジェクトの作成
まずはヒエラルキーウィンドウで敵の基本オブジェクトを作成しましょう。
- Hierarchyウィンドウを開く
Unityエディタの左側にあるHierarchyウィンドウを開きます。 - 2Dオブジェクトを作成
右クリック → 「2D Object」→ 「Sprites」→ 「Square」 を選択し、新しいスプライトを作成します。 - 名前を「Enemy」に変更
作成したオブジェクトの名前を「Enemy」に変更しましょう。 - 画像を設定
Inspectorウィンドウの「Sprite」に、用意した敵用の画像をドラッグ&ドロップします。

✅ これで敵キャラクターの基本オブジェクトが作成されました!
② 敵の当たり判定と物理演算の追加
敵がプレイヤーと衝突するように、**当たり判定(BoxCollider2D)と物理演算(Rigidbody2D)**を追加します。
- 「Enemy」オブジェクトを選択
ヒエラルキーウィンドウで「Enemy」をクリックします。 - Rigidbody2Dを追加
Inspectorウィンドウで「Add Component」ボタンをクリックし、「Rigidbody2D」を検索して追加します。- Gravity Scale(重力の強さ):
0
(敵が落下しないように設定) - Constraints(制約): 「Freeze Rotation(Z軸の回転を固定)」にチェックを入れる(敵が回転しないようにする)
- Gravity Scale(重力の強さ):
- BoxCollider2Dを追加
Inspectorウィンドウで「Add Component」ボタンをクリックし、「BoxCollider2D」を検索して追加します。- 緑色の枠が表示され、これが当たり判定の範囲になります。

✅ Rigidbody2DとBoxCollider2Dを追加することで、敵は物理的な衝突ができるようになります!
③ 敵のタグを設定
敵をスクリプトで判別できるように、タグを設定しましょう。
- 「Enemy」オブジェクトを選択
- Inspectorウィンドウの「Tag」設定を変更
- 「Untagged」をクリックして「Add Tag」を選択
- 「+」ボタンを押して「Enemy」というタグを作成
- 作成したタグを**「Enemy」オブジェクトに適用**

✅ これでスクリプト内で敵を判別できるようになりました!
④ 設定の確認
ここまでの設定が完了したら、一度ゲームを実行してみましょう!
🔹 プレイヤーと敵の当たり判定が正常に機能しているか?
✅ これで敵の配置が完了しました!
次のステップでは、敵の移動スクリプトを実装し、ゲームをさらに動かしていきます!
5. 敵の移動スクリプト
敵が配置されたら、次は移動処理をスクリプトで制御します。
ここでは、敵が一定の速さで左方向に移動するスクリプトを作成し、ゲームらしい動きを実装していきます!
① 新しいC#スクリプトを作成
- Projectウィンドウを開く
- 「Create」→「C# Script」を選択
- 名前を「Enemy」に変更
作成したスクリプトに、以下のコードを入力します。
② スクリプトの記述
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
[SerializeField, Header("移動速度")]
private float moveSpeed = 5f; // 敵の移動速度
private Rigidbody2D rigidBody;
void Start()
{
rigidBody = GetComponent<Rigidbody2D>();
}
void Update()
{
Move();
}
private void Move()
{
rigidBody.velocity = new Vector2(-moveSpeed, rigidBody.velocity.y);
}
}
③ スクリプトの解説
このスクリプトでは、敵が左方向に一定の速度で移動するように設定しています。
- [SerializeField] private float moveSpeed
→ 敵の移動速度を管理(Inspectorから変更可能) - private Rigidbody2D rigidBody
→ 物理演算のためのRigidbody2Dコンポーネントを取得 - rigidBody.velocity = new Vector2(-moveSpeed, rigidBody.velocity.y)
→ 左方向に移動(X軸が負の値)
✅ このコードにより、敵は常に左へ移動するようになります!
④ スクリプトを適用
作成したスクリプトを**「Enemy」オブジェクトにアタッチ**しましょう。
- Hierarchyウィンドウで「Enemy」を選択
- 作成した「Enemy」スクリプトをドラッグ&ドロップ
- Inspectorウィンドウで「Move Speed」を設定(例: 5)
⑤ 設定の確認
ここまでの設定が完了したら、ゲームを実行して動作を確認しましょう!
🔹 敵が左方向に動いているか?
🔹 速度が適切か?(速すぎたり遅すぎたりしないか)
✅ これで敵の移動スクリプトが完成しました!
6. まとめ
お疲れさまでした!この記事では、Unityを使って2Dアクションゲームの基本を学びながら、プレイヤーと敵を配置し、移動スクリプトを実装するところまで進めました。
今回学んだこと
✅ プレイヤーの作成
- ヒエラルキーウィンドウで**2Dオブジェクト(Square)**を作成
- 画像を設定してキャラクターを作成
- Rigidbody2DとBoxCollider2Dを追加して、重力と当たり判定を適用
✅ 床(フィールド)の作成
- ヒエラルキーウィンドウで**床用のスプライト(Square)**を作成
- 床の大きさを調整し、プレイヤーが立てるようにする
- BoxCollider2Dを追加して当たり判定を設定
✅ 敵の作成と移動スクリプトの実装
- 敵オブジェクトを作成し、画像を設定
- Rigidbody2DとBoxCollider2Dを追加して当たり判定を設定
- スクリプトを適用し、敵が左方向に自動で移動するように設定
🚀 もっと簡単に2Dアクションゲームを作りたいなら?
Unityには、プロレベルの2Dプラットフォーマーゲームを簡単に作れるアセットがあります!
その中でも、特に人気なのが 「Corgi Engine」 です。
🔗 Corgi Engine – 2D/2.5D Platformer
✅ Corgi Engine のおすすめポイント!
- プレイヤーの移動・ジャンプ・ダッシュ・攻撃がすぐに実装できる!
- 物理演算・AI・武器システムなどの機能が最初から揃っている!
- コード不要で動かせるキャラがたくさん含まれている!
- 2Dだけでなく、2.5Dプラットフォーマーも簡単に作れる!
👾 「ゼロからプログラムを書くのは大変…」という方は、ぜひCorgi Engineを試してみてください!
📌 今すぐチェック! → Corgi Engine – 2D/2.5D Platformer
👉 パート2へ進もう!
次回の【パート2】では、プレイヤーを操作できるようにする方法を解説します!
移動・ジャンプ・などを実装して、よりゲームらしくしていきます。
📌 続きはこちら → 【Unity】2Dアクションゲームの作り方 パート2
このシリーズを通して、Unityで本格的な2Dアクションゲームを作れるようになりましょう!🚀💡
よくある質問(FAQ)
- Qプレイヤーが動かない!
- A
プレイヤーが動かない場合、以下の点を確認してください。
- Rigidbody2Dが追加されているか?
- BoxCollider2Dが設定されているか?
- プレイヤーの画像を適用しているか?
もしスクリプトを適用した後に動かない場合は、エラーメッセージが出ていないかConsoleウィンドウもチェックしてみましょう。
- Qプレイヤーが床をすり抜けてしまう!
- A
当たり判定が正しく設定されているか確認しましょう。
- 床(Floor)にBoxCollider2Dが追加されているか?
- プレイヤー(Player)にBoxCollider2Dが追加されているか?
- Rigidbody2Dの「Collision Detection」を「Continuous」に設定すると、物理演算の精度が向上します。
- Q敵が動かない!
- A
A: 敵が移動しない場合、以下の点を確認してください。
- 「Enemy」スクリプトがアタッチされているか?(Inspectorで確認)
- 「Move Speed」の値が0になっていないか?
スクリプトを修正した後は、必ず保存(Ctrl + S)してからUnityを再生しましょう。