2DアクションUnityゲームの作り方メモ

【Unity】初心者向け2Dアクションゲームを作ろう①!プレイヤー・敵・床の設定方法

2Dアクション

はじめに

Unityを使って、自分だけの2Dアクションゲームを作ってみませんか?「でも、プログラミングって難しそう…」と思うかもしれません。でも大丈夫!この記事では、初心者でも簡単に作れる2Dアクションゲームの作り方をステップごとに分かりやすく解説します。

今回作るのは、プレイヤーが動き回り、敵をよけながらゴールを目指すシンプルな2Dアクションゲームです。Unityの基本的な操作や、キャラクターの動かし方、敵の配置方法など、ゲーム作りの基本をしっかり学べる内容になっています。

使用するアセット

ゲームに必要な画像(プレイヤー・床・敵など)は、Unityアセットストアの**「Simple 2D Platformer Assets Pack」**を使用します。無料で使えるので、まだ持っていない方は以下のリンクからダウンロードしておきましょう!

🔗 Simple 2D Platformer Assets Pack


作るゲームのイメージ

この記事では、以下のような基本的な動作を実装します。

プレイヤーを作成し、動かせるようにする
床を作り、プレイヤーが落ちないようにする
敵を配置し、動かす
簡単な当たり判定を実装する

この内容をマスターすれば、自分だけのオリジナル2Dアクションゲームを作るための土台ができるはずです!それでは、さっそくゲーム作りを始めていきましょう!

この記事では、Unityで2Dアクションゲームを一から作る方法を解説しますが、
Corgi Engine を使えば、
すぐにプロレベルのアクションゲームを作れるテンプレートが揃っています!
ぜひアセットストアもチェックしてみてください!




2. プレイヤーを作成

ゲームの主役となるプレイヤーキャラクターを作成していきます。今回は、四角形のスプライトを使用してプレイヤーを作り、画像を設定してキャラクターとして見た目を整えます。また、**物理演算(Rigidbody2D)と当たり判定(BoxCollider2D)**を追加し、重力や衝突判定を適用していきます。

おすすめのアセット


① プレイヤーオブジェクトの作成

まずは、ヒエラルキーウィンドウでプレイヤーの基本オブジェクトを作成します。

  1. Hierarchyウィンドウを開く
    Unityエディタの左側にあるHierarchyウィンドウを開きます。
  2. 2Dオブジェクトを作成
    右クリック → 「2D Object」→ 「Sprites」→ 「Square」 を選択し、新しいスプライトを作成します。
  3. 名前を「Player」に変更
    作成したオブジェクトの名前を「Player」に変更しましょう。
  4. 画像を設定
    Inspectorウィンドウの「Sprite」に、用意したプレイヤー用の画像をドラッグ&ドロップします。

② 物理演算(Rigidbody2D)の追加

次に、プレイヤーに**物理演算(重力)**を適用します。これを行うことで、プレイヤーが自然に下方向へ落ちるようになります。

  1. 「Player」オブジェクトを選択
    ヒエラルキーウィンドウで「Player」をクリックします。
  2. Rigidbody2Dを追加
    Inspectorウィンドウで「Add Component」ボタンをクリックし、「Rigidbody2D」を検索して追加します。
  3. 設定を調整
    • Gravity Scale(重力の強さ): デフォルトのままでOK(1.0)
    • Constraints(制約): 「Freeze Rotation(Z軸の回転を固定)」にチェックを入れる(プレイヤーが回転しないようにする)

Rigidbody2Dを追加すると、プレイヤーは自然に重力で下に落ちるようになります!


③ 当たり判定(BoxCollider2D)の追加

プレイヤーが床や敵と衝突できるようにするため、当たり判定(BoxCollider2D)を追加します。

  1. 「Player」オブジェクトを選択
    ヒエラルキーウィンドウで「Player」をクリックします。
  2. BoxCollider2Dを追加
    Inspectorウィンドウで「Add Component」ボタンをクリックし、「BoxCollider2D」を検索して追加します。
  3. 当たり判定の確認
    • BoxCollider2Dを追加すると、緑色の枠が表示されます。
    • これがプレイヤーの当たり判定の範囲になります。
    • 必要に応じて**Size(サイズ)やOffset(位置)**を調整できます。

④ 設定の確認

ここまでの設定が完了したら、一度ゲームを実行してみましょう!

🔹 プレイヤーに重力が適用されているか?

✅ これでプレイヤーの基本設定が完了しました!
次のステップでは、床の設定を行い、プレイヤーがしっかりと地面に立つようにしていきます!




3. 床(フィールド)を作成

プレイヤーが落ちずに立てる床(フィールド)を作成します。
床を作ることで、プレイヤーが重力で落ちてもしっかりと地面で止まる
ようになります。
また、当たり判定を追加して、床の上を歩けるように設定していきます。


① 床オブジェクトの作成

まずはヒエラルキーウィンドウで床(フィールド)を作成しましょう。

  1. Hierarchyウィンドウを開く
    Unityエディタの左側にあるHierarchyウィンドウを開きます。
  2. 2Dオブジェクトを作成
    右クリック → 「2D Object」→ 「Sprites」→ 「Square」 を選択し、新しいスプライトを作成します。
  3. 名前を「Floor」に変更
    作成したオブジェクトの名前を「Floor」に変更しましょう。
  4. 画像を設定
    Inspectorウィンドウの「Sprite」に、用意した床用の画像をドラッグ&ドロップします。

② 床の大きさと位置を調整

次に、床の大きさや位置を調整し、プレイヤーが歩けるサイズに変更します。

  1. 「Floor」オブジェクトを選択
    ヒエラルキーウィンドウで「Floor」をクリックします。
  2. Inspectorウィンドウで「Transform」を調整
    • Position(位置): X = 0, Y = -3 (プレイヤーの下に配置)
    • Scale(サイズ): X = 5, Y = 0.5(横に長く、薄い形に)

これで床が横に広がり、プレイヤーが乗れるようになります!


③ 当たり判定(BoxCollider2D)の追加

プレイヤーが床に接触し、しっかりと止まるように**当たり判定(BoxCollider2D)**を追加します。

  1. 「Floor」オブジェクトを選択
    ヒエラルキーウィンドウで「Floor」をクリックします。
  2. BoxCollider2Dを追加
    Inspectorウィンドウで「Add Component」ボタンをクリックし、「BoxCollider2D」を検索して追加します。
  3. 当たり判定の確認
    • BoxCollider2Dを追加すると、緑色の枠が表示されます。
    • これが床の当たり判定の範囲になります。
    • 必要に応じて**Size(サイズ)やOffset(位置)**を調整できます。

BoxCollider2Dを追加すると、プレイヤーが床に落ちたときに止まるようになります!


④ 設定の確認

ここまでの設定が完了したら、一度ゲームを実行してみましょう!

🔹 プレイヤーが床の上に落ちて止まるか?
🔹 床の大きさが適切であるか?

✅ これで床(フィールド)の作成が完了しました!
次のステップでは、敵の作成と移動処理の実装を行っていきます!




4. 敵を配置

次に、ゲームに敵キャラクターを配置していきます。
プレイヤーが動き回るだけではゲームとして物足りないので、敵を配置して緊張感を持たせましょう!
また、敵には物理演算や当たり判定を追加して、プレイヤーとぶつかるように設定します。


① 敵オブジェクトの作成

まずはヒエラルキーウィンドウで敵の基本オブジェクトを作成しましょう。

  1. Hierarchyウィンドウを開く
    Unityエディタの左側にあるHierarchyウィンドウを開きます。
  2. 2Dオブジェクトを作成
    右クリック → 「2D Object」→ 「Sprites」→ 「Square」 を選択し、新しいスプライトを作成します。
  3. 名前を「Enemy」に変更
    作成したオブジェクトの名前を「Enemy」に変更しましょう。
  4. 画像を設定
    Inspectorウィンドウの「Sprite」に、用意した敵用の画像をドラッグ&ドロップします。

これで敵キャラクターの基本オブジェクトが作成されました!


② 敵の当たり判定と物理演算の追加

敵がプレイヤーと衝突するように、**当たり判定(BoxCollider2D)物理演算(Rigidbody2D)**を追加します。

  1. 「Enemy」オブジェクトを選択
    ヒエラルキーウィンドウで「Enemy」をクリックします。
  2. Rigidbody2Dを追加
    Inspectorウィンドウで「Add Component」ボタンをクリックし、「Rigidbody2D」を検索して追加します。
    • Gravity Scale(重力の強さ): 0(敵が落下しないように設定)
    • Constraints(制約): 「Freeze Rotation(Z軸の回転を固定)」にチェックを入れる(敵が回転しないようにする)
  3. BoxCollider2Dを追加
    Inspectorウィンドウで「Add Component」ボタンをクリックし、「BoxCollider2D」を検索して追加します。
    • 緑色の枠が表示され、これが当たり判定の範囲になります。

Rigidbody2DとBoxCollider2Dを追加することで、敵は物理的な衝突ができるようになります!


③ 敵のタグを設定

敵をスクリプトで判別できるように、タグを設定しましょう。

  1. 「Enemy」オブジェクトを選択
  2. Inspectorウィンドウの「Tag」設定を変更
    • 「Untagged」をクリックして「Add Tag」を選択
    • 「+」ボタンを押して「Enemy」というタグを作成
    • 作成したタグを**「Enemy」オブジェクトに適用**

これでスクリプト内で敵を判別できるようになりました!


④ 設定の確認

ここまでの設定が完了したら、一度ゲームを実行してみましょう!


🔹 プレイヤーと敵の当たり判定が正常に機能しているか?

✅ これで敵の配置が完了しました!
次のステップでは、敵の移動スクリプトを実装し、ゲームをさらに動かしていきます!




5. 敵の移動スクリプト

敵が配置されたら、次は移動処理をスクリプトで制御します。
ここでは、敵が一定の速さで左方向に移動するスクリプトを作成し、ゲームらしい動きを実装していきます!


① 新しいC#スクリプトを作成

  1. Projectウィンドウを開く
  2. 「Create」→「C# Script」を選択
  3. 名前を「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」オブジェクトにアタッチ**しましょう。

  1. Hierarchyウィンドウで「Enemy」を選択
  2. 作成した「Enemy」スクリプトをドラッグ&ドロップ
  3. 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を再生しましょう。

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