1. はじめに
Unityでゲームを作ってみたいけど、「何から始めたらいいの?」と悩んでいませんか?
この記事では、初心者の方でも分かりやすいように 2DアクションRPG の作り方を パート1 として解説していきます!
まずは、ゲームに必要な キャラクターや背景素材を準備 し、プレイヤーキャラの配置とアニメーションの設定 を行います。
さらに、キャラクターを キーボードで自由に動かせるようにするスクリプト も実装していきます。
「プログラミングは初めて…」という方でも大丈夫!
必要なコードは コピペでOK なので、実際に動かしながら学んでいきましょう。
今回のゴール
✅ キャラクターの画像素材を準備し、Unityにインポート
✅ プレイヤーキャラクターを配置し、アニメーションを設定
✅ キーボード操作でプレイヤーを動かせるようにする
次回のパートでは 敵キャラの配置や攻撃アクション などを実装していく予定です。
それでは早速、素材の準備から始めましょう!
2. 素材の準備
ゲームを作るためには、まず キャラクターやマップの素材 を用意する必要があります。
今回は、以下の無料アセットを使用して 2DアクションRPG を作成していきます。
使用する素材
🔹 マップ素材:Pixel Art Top Down Basic(Unity Asset Store)
🔹 キャラチップ素材:Pipoya キャラチップ(Pipoya)
これらの素材をダウンロードし、Unityにインポート していきましょう。
素材としておすすめのアセット
- 2D TopDown Tilesets Bundle
→ 高品質なタイルセットを使って、美しい2Dマップを作成できます! - 2D TopDown Tilesets – Fantasy Dreamland
→ 美しいファンタジー風のマップを作れるタイルセット!RPGや冒険ゲームに最適です。
1. 素材をUnityにインポートする
- Unityを開く
→ 事前にプロジェクトを作成しておきましょう(2Dゲーム用のプロジェクト推奨)。 - Asset Storeの素材をインポート
- 上記のリンクから 「Pixel Art Top Down Basic」 をダウンロード。
- Unityエディタの
Window
メニューからPackage Manager
を開き、My Assets
からアセットをインポート。
- キャラチップ素材を追加
Pipoya
のサイトから キャラチップ画像 をダウンロード。- プロジェクトウィンドウ で
Assets
フォルダ内にSprites
フォルダを作成。 Sprites
フォルダ内にCharacter
フォルダを作成し、ダウンロードしたキャラチップ画像をドラッグ&ドロップ。
2. フォルダを整理する
Unityでは、プロジェクト内のファイルを整理しておくと作業がスムーズになります。
以下のようなフォルダ構成を作り、各ファイルを適切に管理しましょう。
📂 Assets
📂 Sprites(キャラやマップの画像)
📂 Animations(アニメーションデータ)
📂 Scripts(C#スクリプト)
📂 Prefabs(プレイヤーや敵キャラのプレハブ)
フォルダを作成するには、プロジェクトウィンドウ の Assets
フォルダを右クリックし、Create
→ Folder
を選択して、新しいフォルダを作ってください。

これで、ゲームに必要な素材の準備と整理が完了 しました!
次のステップでは プレイヤーキャラを作成し、シーンに配置 していきます。
3. プレイヤーキャラの作成
ゲームの主人公となる プレイヤーキャラ を作成して、シーンに配置していきます。
まずは プレイヤーの基本オブジェクトを作成し、アニメーションを設定 しましょう!
3.1 空のオブジェクトの作成
プレイヤーキャラのベースとなる 空のオブジェクト を作成します。
- ヒエラルキー(Hierarchy)ウィンドウで作成
Hierarchy
ウィンドウを開く。- 右クリック →
Create Empty
を選択。 - 生成されたオブジェクトの名前を 「Player」 に変更。
- Rigidbody2D を追加
Inspector
ウィンドウを開く(選択中のオブジェクトが「Player」になっていることを確認)。Add Component
をクリック し、Rigidbody2D
を追加。Gravity Scale
を0
に変更(重力の影響を受けないようにする)。
✅ ここまでの作業で、プレイヤーキャラの基礎が完成!
3.2 プレイヤーのアニメーション設定
次に、プレイヤーキャラの アニメーション を設定します。
まずは 前向きのアニメーション を作成しましょう。
前向きのアニメーションを作成
Project
ウィンドウの Sprites → Character フォルダを開く。- 前向きのキャラチップの画像をすべて選択 する(Shiftキーを押しながらクリック)。
- 選択した画像を 「Player」オブジェクトにドラッグ&ドロップ する。
- アニメーションの保存先を指定するウィンドウが表示されるので、
Animations
フォルダ内に保存。- アニメーションの名前は「front」 にする。

これで、前向きのアニメーションが作成 されました!Player
の Inspector
を見ると、自動で Animator コンポーネントが追加されているはずです。
左右・後ろ向きのアニメーションを作成
前向きのアニメーションと同じ方法で、左・右・後ろ向きのアニメーション を作成します。
- 左向きのアニメーション
- キャラチップの 左向きの画像 をすべて選択し、Player にドラッグ&ドロップ。
- アニメーションの名前を 「left」 にする。
- 右向きのアニメーション
- 右向きの画像 をすべて選択し、Player にドラッグ&ドロップ。
- アニメーションの名前を 「right」 にする。
- 後ろ向きのアニメーション
- 後ろ向きの画像 をすべて選択し、Player にドラッグ&ドロップ。
- アニメーションの名前を 「back」 にする。


✅ ここまでで、前後左右のアニメーションが完成!
次のステップでは、アニメーションを Animator に適用 し、キャラクターが適切に動くように設定していきます!
4. アニメーションの適用
前のステップで作成した 前後左右のアニメーション を、実際にプレイヤーキャラクターに適用していきます。
アニメーションが正しく再生されるように、Animator
の設定を確認し、調整しましょう!
4.1 Animatorの確認
プレイヤーキャラクターにアニメーションを適用するため、Animator の設定 を確認します。
Player
オブジェクトを選択 し、Inspector
を開く。Animator
コンポーネントが自動追加 されていることを確認する。- もし
Animator
が追加されていない場合:Inspector
でAdd Component
をクリックし、Animator
を手動で追加する。
- もし
Sprite Renderer
の設定Sprite Renderer
のSprite
がNone
になっている場合、前向きの画像 を設定する。

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

4.3 動作確認
設定が完了したら、実際にゲームを再生してアニメーションを確認してみましょう。
- Unity の再生ボタン(▶)をクリック して、アニメーションが正常に再生されるかチェック。
- アニメーションの動きが 速すぎる or 遅すぎる場合 は、
Speed
の値を再調整。

✅ ここまでで、アニメーションの適用が完了しました!
次のステップでは プレイヤーキャラをキーボードで移動できるようにするスクリプト を作成していきます!
5. プレイヤーを移動させる
ここまでで プレイヤーキャラクターの作成とアニメーションの設定 が完了しました。
次のステップでは、プレイヤーを キーボードの入力で移動できるようにするスクリプト を作成します。
「この記事ではプレイヤーの移動処理をスクリプトで実装しますが、すでに完成されたトップダウン型の移動・攻撃システムを使いたい場合は「TopDown Engine」がおすすめです!」
🔗 TopDown Engine – Unity Asset Store
スクリプトの作成
- プロジェクトウィンドウを開く
Project
ウィンドウでAssets
フォルダを開く。
- 新しいスクリプトを作成
Scripts
フォルダがない場合は作成しておく(Assets
フォルダを右クリック →Create
→Folder
→ 名前をScripts
に変更)。Scripts
フォルダ内で 右クリック →Create
→C# Script
を選択。- 作成されたスクリプトの名前を 「PlayerController」 に変更。
スクリプトにコードを入力
- 作成した
PlayerController
をダブルクリック してスクリプトを開く(Visual Studio などのエディタが開きます)。 - 以下のコードを入力 し、保存 (
Ctrl + S
orCmd + 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
に適用 します。
Hierarchy
ウィンドウでPlayer
を選択。- 作成した
PlayerController
スクリプトを ドラッグ&ドロップ してPlayer
にアタッチ。 Inspector
でPlayerController
のMove Speed
の値を 「5」 くらいに設定。
ゲームを再生して移動を確認
すべての設定が完了したら、実際にプレイヤーを動かしてみましょう!
- 再生ボタン(▶)をクリック
- ASDWキー(または矢印キー)でキャラクターを操作
- スムーズに動くか確認

✅ 問題なく移動できたら成功!
次のステップでは アニメーションと移動を連動させる方法 を実装していきます!
6. アニメーションと移動を連動
ここまでで、プレイヤーの 移動処理 と 基本的なアニメーション の設定が完了しました。
しかし、現状では 移動してもキャラクターの向きが変わらず、常に正面を向いたまま です。
このステップでは、移動方向に応じてアニメーションが切り替わるように設定 していきます!
BlendTree(ブレンドツリー) を使用することで、移動の方向に応じたアニメーションの遷移をスムーズに行うことができます。
6.1 BlendTreeの設定
1. Animatorを開く
Player
を選択し、Animator
ウィンドウを開く。
→Window
→Animation
→Animator
から開くことができます。- これまで作成した アニメーション(front, back, left, right) を すべて削除 します。

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

3. BlendTree の設定
Inspector
ウィンドウで Blend Type を2D Simple Directional
に変更。Parameters
タブを開き、「+」ボタンをクリック して Float型のX
とY
を追加。

4. アニメーションを追加
Motion
の+
ボタンをクリックし、Add Motion Field
を選択。- front, back, left, right のアニメーションをそれぞれ追加 し、以下のようにパラメータを設定。
アニメーション | X値 | Y値 |
---|---|---|
front(前向き) | 0 | -1 |
back(後ろ向き) | 0 | 1 |
left(左向き) | -1 | 0 |
right(右向き) | 1 | 0 |
✅ これで BlendTree の設定が完了しました!
6.2 移動方向によるアニメーションの変更
次に、スクリプトを修正して 移動方向に応じたアニメーションの切り替え を実装します。
1. PlayerController スクリプトを修正
PlayerController.cs
を開く。- 以下のコードを
Update()
に追加し、移動方向に応じてX
とY
の値を変更するようにする。
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. スクリプトを保存し、動作確認
- スクリプトを保存 (
Ctrl + S
orCmd + S
)。 - Unityに戻り、ゲームを再生(▶ボタン)。
- ASDWキー(矢印キー)でプレイヤーを移動させ、アニメーションが移動方向に応じて変化するか確認!
✅ キャラクターが移動方向に応じてアニメーションを切り替えるようになったら成功! 🎉
6.3 まとめ
- BlendTree を設定し、X, Y のパラメータを追加
- 移動方向に応じてアニメーションを切り替えるスクリプトを実装
- ASDWキーで移動すると、対応する方向のアニメーションが再生されるようになった
次のステップでは、キャラクターの攻撃やアクションの実装 に進んでいきます!
7. まとめ
今回は、2DアクションRPGの基礎となるプレイヤーキャラクターの作成 を行いました!
具体的には、以下のポイントを実装しました。
✅ プレイヤーキャラの作成
✅ アニメーションの設定(前後左右のモーション作成)
✅ キーボード操作でキャラクターを移動させるスクリプト
✅ BlendTree を活用したアニメーションと移動の連動
ここまでの作業で、プレイヤーを自由に動かせるようになり、移動方向に応じたアニメーションの切り替え もできるようになりました! 🎮✨
次回の内容
次回は、ゲームに必要な マップの作成や攻撃処理の実装 に進みます!
プレイヤーが移動する ステージ(マップ)を作り、敵と戦えるようにする処理 を追加していきます。
次のパートで学べること:
- タイルマップを使ったマップの作成
- プレイヤーの攻撃アニメーション
- 敵キャラの配置と基本的なAI

よりゲームらしい動きを作っていくので、ぜひ楽しみにしてください! 🎮🔥
よくある質問(FAQ)
- Qキャラクターが動かない!
- A
Rigidbody2D
がアタッチされているか、Gravity Scale
が0
になっているか確認してください。
- Qアニメーションが切り替わらない
- A
Animator
のBlendTree
の設定を見直し、X
やY
の値が正しく設定されているかチェックしてください。
- Qプレイヤーが滑るように動く
- A
Rigidbody2D
のConstraints
でFreeze Rotation (Z)
を有効にすると改善される場合があります。