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

【Unity】2DアクションRPGの作り方①!初心者向けチュートリアル

2Dアクション

1. はじめに

Unityでゲームを作ってみたいけど、「何から始めたらいいの?」と悩んでいませんか?
この記事では、初心者の方でも分かりやすいように 2DアクションRPG の作り方を パート1 として解説していきます!

まずは、ゲームに必要な キャラクターや背景素材を準備 し、プレイヤーキャラの配置とアニメーションの設定 を行います。
さらに、キャラクターを キーボードで自由に動かせるようにするスクリプト も実装していきます。

「プログラミングは初めて…」という方でも大丈夫!
必要なコードは コピペでOK なので、実際に動かしながら学んでいきましょう。

今回のゴール

✅ キャラクターの画像素材を準備し、Unityにインポート
✅ プレイヤーキャラクターを配置し、アニメーションを設定
✅ キーボード操作でプレイヤーを動かせるようにする

次回のパートでは 敵キャラの配置や攻撃アクション などを実装していく予定です。
それでは早速、素材の準備から始めましょう!




2. 素材の準備

ゲームを作るためには、まず キャラクターやマップの素材 を用意する必要があります。
今回は、以下の無料アセットを使用して 2DアクションRPG を作成していきます。

使用する素材

🔹 マップ素材Pixel Art Top Down Basic(Unity Asset Store)
🔹 キャラチップ素材Pipoya キャラチップ(Pipoya)

これらの素材をダウンロードし、Unityにインポート していきましょう。

素材としておすすめのアセット


1. 素材をUnityにインポートする

  1. Unityを開く
    → 事前にプロジェクトを作成しておきましょう(2Dゲーム用のプロジェクト推奨)。
  2. Asset Storeの素材をインポート
    • 上記のリンクから 「Pixel Art Top Down Basic」 をダウンロード。
    • Unityエディタの Window メニューから Package Manager を開き、My Assets からアセットをインポート。
  3. キャラチップ素材を追加
    • Pipoya のサイトから キャラチップ画像 をダウンロード。
    • プロジェクトウィンドウAssets フォルダ内に Sprites フォルダを作成。
    • Sprites フォルダ内に Character フォルダを作成し、ダウンロードしたキャラチップ画像をドラッグ&ドロップ。

2. フォルダを整理する

Unityでは、プロジェクト内のファイルを整理しておくと作業がスムーズになります。
以下のようなフォルダ構成を作り、各ファイルを適切に管理しましょう。

📂 Assets
 📂 Sprites(キャラやマップの画像)
 📂 Animations(アニメーションデータ)
 📂 Scripts(C#スクリプト)
 📂 Prefabs(プレイヤーや敵キャラのプレハブ)

フォルダを作成するには、プロジェクトウィンドウAssets フォルダを右クリックし、
CreateFolder を選択して、新しいフォルダを作ってください。

これで、ゲームに必要な素材の準備と整理が完了 しました!
次のステップでは プレイヤーキャラを作成し、シーンに配置 していきます。




3. プレイヤーキャラの作成

ゲームの主人公となる プレイヤーキャラ を作成して、シーンに配置していきます。
まずは プレイヤーの基本オブジェクトを作成し、アニメーションを設定 しましょう!


3.1 空のオブジェクトの作成

プレイヤーキャラのベースとなる 空のオブジェクト を作成します。

  1. ヒエラルキー(Hierarchy)ウィンドウで作成
    • Hierarchy ウィンドウを開く。
    • 右クリック → Create Empty を選択。
    • 生成されたオブジェクトの名前を 「Player」 に変更。
  2. Rigidbody2D を追加
    • Inspector ウィンドウを開く(選択中のオブジェクトが「Player」になっていることを確認)。
    • Add Component をクリック し、Rigidbody2D を追加。
    • Gravity Scale0 に変更(重力の影響を受けないようにする)。

✅ ここまでの作業で、プレイヤーキャラの基礎が完成!


3.2 プレイヤーのアニメーション設定

次に、プレイヤーキャラの アニメーション を設定します。
まずは 前向きのアニメーション を作成しましょう。

前向きのアニメーションを作成

  1. Project ウィンドウの Sprites → Character フォルダを開く。
  2. 前向きのキャラチップの画像をすべて選択 する(Shiftキーを押しながらクリック)。
  3. 選択した画像を 「Player」オブジェクトにドラッグ&ドロップ する。
  4. アニメーションの保存先を指定するウィンドウが表示されるので、Animations フォルダ内に保存。
    • アニメーションの名前は「front」 にする。

これで、前向きのアニメーションが作成 されました!
PlayerInspector を見ると、自動で Animator コンポーネントが追加されているはずです。


左右・後ろ向きのアニメーションを作成

前向きのアニメーションと同じ方法で、左・右・後ろ向きのアニメーション を作成します。

  1. 左向きのアニメーション
    • キャラチップの 左向きの画像 をすべて選択し、Player にドラッグ&ドロップ。
    • アニメーションの名前を 「left」 にする。
  2. 右向きのアニメーション
    • 右向きの画像 をすべて選択し、Player にドラッグ&ドロップ。
    • アニメーションの名前を 「right」 にする。
  3. 後ろ向きのアニメーション
    • 後ろ向きの画像 をすべて選択し、Player にドラッグ&ドロップ。
    • アニメーションの名前を 「back」 にする。

✅ ここまでで、前後左右のアニメーションが完成!
次のステップでは、アニメーションを Animator に適用 し、キャラクターが適切に動くように設定していきます!




4. アニメーションの適用

前のステップで作成した 前後左右のアニメーション を、実際にプレイヤーキャラクターに適用していきます。
アニメーションが正しく再生されるように、Animator の設定を確認し、調整しましょう!


4.1 Animatorの確認

プレイヤーキャラクターにアニメーションを適用するため、Animator の設定 を確認します。

  1. Player オブジェクトを選択 し、Inspector を開く。
  2. Animator コンポーネントが自動追加 されていることを確認する。
    • もし Animator が追加されていない場合:
      • InspectorAdd Component をクリックし、Animator を手動で追加する。
  3. Sprite Renderer の設定
    • Sprite RendererSpriteNone になっている場合、前向きの画像 を設定する。

4.2 アニメーション速度の調整

アニメーションの速度を調整し、自然な動きになるように設定します。

  1. Animator ウィンドウを開く
    • Player を選択した状態で、Animator ウィンドウを開く(WindowAnimationAnimator)。
    • 先ほど作成した front, back, left, right のアニメーションが Animator に追加されていることを確認。
  2. アニメーションの Speed を調整
    • Animator で各アニメーションをクリックし、Inspector を開く。
    • Speed の値を 0.5 に変更(デフォルトは 1.0)。
    • これにより、アニメーションの再生速度が 半分の速さ になり、自然な動きになる。

4.3 動作確認

設定が完了したら、実際にゲームを再生してアニメーションを確認してみましょう。

  1. Unity の再生ボタン(▶)をクリック して、アニメーションが正常に再生されるかチェック。
  2. アニメーションの動きが 速すぎる or 遅すぎる場合 は、Speed の値を再調整。

✅ ここまでで、アニメーションの適用が完了しました!
次のステップでは プレイヤーキャラをキーボードで移動できるようにするスクリプト を作成していきます!




5. プレイヤーを移動させる

ここまでで プレイヤーキャラクターの作成とアニメーションの設定 が完了しました。
次のステップでは、プレイヤーを キーボードの入力で移動できるようにするスクリプト を作成します。
「この記事ではプレイヤーの移動処理をスクリプトで実装しますが、すでに完成されたトップダウン型の移動・攻撃システムを使いたい場合は「TopDown Engine」がおすすめです!
🔗 TopDown Engine – Unity Asset Store


スクリプトの作成

  1. プロジェクトウィンドウを開く
    • Project ウィンドウで Assets フォルダを開く。
  2. 新しいスクリプトを作成
    • Scripts フォルダがない場合は作成しておく(Assets フォルダを右クリック → CreateFolder → 名前を Scripts に変更)。
    • Scripts フォルダ内で 右クリックCreateC# Script を選択。
    • 作成されたスクリプトの名前を 「PlayerController」 に変更。

スクリプトにコードを入力

  1. 作成した PlayerController をダブルクリック してスクリプトを開く(Visual Studio などのエディタが開きます)。
  2. 以下のコードを入力 し、保存 (Ctrl + S or Cmd + S) します。
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    [SerializeField, Tooltip("移動速度")]
    private int moveSpeed;
    [SerializeField]
    private Animator playerAnim;

    public Rigidbody2D rb;
   

    
    void Update()
    {
        rb.velocity = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")).normalized * moveSpeed;
    }
}

コードのポイント

  • moveSpeed(移動速度)を SerializeField で設定可能にし、Inspector から値を調整できるように。
  • Rigidbody2D を使用し、プレイヤーを キーボードの入力に応じて移動 させる処理を実装。
  • Input.GetAxisRaw("Horizontal")Input.GetAxisRaw("Vertical") を使用し、ASDWキーや矢印キー で移動を可能に。

スクリプトを Player にアタッチ

スクリプトを書き終えたら、Player に適用 します。

  1. Hierarchy ウィンドウで Player を選択。
  2. 作成した PlayerController スクリプトを ドラッグ&ドロップ して Player にアタッチ。
  3. InspectorPlayerControllerMove Speed の値を 「5」 くらいに設定。

ゲームを再生して移動を確認

すべての設定が完了したら、実際にプレイヤーを動かしてみましょう!

  1. 再生ボタン(▶)をクリック
  2. ASDWキー(または矢印キー)でキャラクターを操作
  3. スムーズに動くか確認

問題なく移動できたら成功!
次のステップでは アニメーションと移動を連動させる方法 を実装していきます!




6. アニメーションと移動を連動

ここまでで、プレイヤーの 移動処理基本的なアニメーション の設定が完了しました。
しかし、現状では 移動してもキャラクターの向きが変わらず、常に正面を向いたまま です。

このステップでは、移動方向に応じてアニメーションが切り替わるように設定 していきます!
BlendTree(ブレンドツリー) を使用することで、移動の方向に応じたアニメーションの遷移をスムーズに行うことができます。


6.1 BlendTreeの設定

1. Animatorを開く

  1. Player を選択し、Animator ウィンドウを開く。
    WindowAnimationAnimator から開くことができます。
  2. これまで作成した アニメーション(front, back, left, right)すべて削除 します。

2. BlendTree を作成

  1. Animator ウィンドウ内で 右クリック
  2. Create StateFrom New BlendTree を選択。
  3. 作成された BlendTreeダブルクリック して編集モードに入る。

3. BlendTree の設定

  1. Inspector ウィンドウで Blend Type2D Simple Directional に変更。
  2. Parameters タブを開き、「+」ボタンをクリック して Float型の XY を追加。

4. アニメーションを追加

  1. Motion+ ボタンをクリックし、Add Motion Field を選択。
  2. front, back, left, right のアニメーションをそれぞれ追加 し、以下のようにパラメータを設定。
アニメーションX値Y値
front(前向き)0-1
back(後ろ向き)01
left(左向き)-10
right(右向き)10

これで BlendTree の設定が完了しました!


6.2 移動方向によるアニメーションの変更

次に、スクリプトを修正して 移動方向に応じたアニメーションの切り替え を実装します。

1. PlayerController スクリプトを修正

  1. PlayerController.cs を開く。
  2. 以下のコードを Update() に追加し、移動方向に応じて XY の値を変更するようにする。
        if (rb.velocity != Vector2.zero) 
        {
            if (Input.GetAxisRaw("Horizontal") != 0)
            {
                if (Input.GetAxisRaw("Horizontal") > 0)
                {
                    playerAnim.SetFloat("X", 1f);
                    playerAnim.SetFloat("Y", 0);
                }
                else
                {
                    playerAnim.SetFloat("X", -1f);
                    playerAnim.SetFloat("Y", 0);
                }

            }
            else if (Input.GetAxisRaw("Vertical") > 0)
            {
                playerAnim.SetFloat("X", 0);
                playerAnim.SetFloat("Y", 1f);
            }
            else 
            {
                playerAnim.SetFloat("X", 0);
                playerAnim.SetFloat("Y", -1f);
            }
        
        }

2. スクリプトを保存し、動作確認

  1. スクリプトを保存 (Ctrl + S or Cmd + S)。
  2. Unityに戻り、ゲームを再生(▶ボタン)
  3. ASDWキー(矢印キー)でプレイヤーを移動させ、アニメーションが移動方向に応じて変化するか確認!

キャラクターが移動方向に応じてアニメーションを切り替えるようになったら成功! 🎉


6.3 まとめ

  • BlendTree を設定し、X, Y のパラメータを追加
  • 移動方向に応じてアニメーションを切り替えるスクリプトを実装
  • ASDWキーで移動すると、対応する方向のアニメーションが再生されるようになった

次のステップでは、キャラクターの攻撃やアクションの実装 に進んでいきます!




7. まとめ

今回は、2DアクションRPGの基礎となるプレイヤーキャラクターの作成 を行いました!
具体的には、以下のポイントを実装しました。

プレイヤーキャラの作成
アニメーションの設定(前後左右のモーション作成)
キーボード操作でキャラクターを移動させるスクリプト
BlendTree を活用したアニメーションと移動の連動

ここまでの作業で、プレイヤーを自由に動かせるようになり、移動方向に応じたアニメーションの切り替え もできるようになりました! 🎮✨


次回の内容

次回は、ゲームに必要な マップの作成や攻撃処理の実装 に進みます!
プレイヤーが移動する ステージ(マップ)を作り、敵と戦えるようにする処理 を追加していきます。

次のパートで学べること:

  • タイルマップを使ったマップの作成
  • プレイヤーの攻撃アニメーション
  • 敵キャラの配置と基本的なAI

よりゲームらしい動きを作っていくので、ぜひ楽しみにしてください! 🎮🔥




よくある質問(FAQ)

Q
キャラクターが動かない!
A

Rigidbody2D がアタッチされているか、Gravity Scale0 になっているか確認してください。

Q
アニメーションが切り替わらない
A

AnimatorBlendTree の設定を見直し、XY の値が正しく設定されているかチェックしてください。

Q
プレイヤーが滑るように動く
A

Rigidbody2DConstraintsFreeze Rotation (Z) を有効にすると改善される場合があります。

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