Unityゲームの作り方メモ

【Unity】2D格闘ゲームの作り方①!初心者向けチュートリアル

Unity

1. はじめに

Unityを使って2D格闘ゲームを作りたいけど、どこから始めればいいかわからない…そんなあなたに向けて、この記事では基礎から順番に作り方を解説します!

「キャラクターを配置して動かす」「アニメーションを設定する」「攻撃アクションを実装する」など、2D格闘ゲームを作るうえで欠かせない基本要素を一つずつ学んでいきましょう。

今回は、Unityの無料アセットBandits Pixel Art」を使って、実際にキャラクターを動かしながら作っていきます。

この記事で学べること

タイルマップを使って背景を作成する
プレイヤーキャラを配置して、動かせるようにする
アニメーションの切り替えでスムーズに動かす

格闘ゲームの基本となる「プレイヤーの移動」や「アニメーションの切り替え」から始めて、少しずつゲームらしい動きを作っていきます。
初心者の方でも分かりやすいように、コードの説明も丁寧に解説するので、ぜひ一緒に作ってみましょう!

それでは、Unityの基本設定から始めます! 🚀



2. Unityの初期設定

ゲームを作る前に、まずはUnityの基本的な設定を整えましょう!
ここでは、メインカメラの調整タイルマップの配置を行い、ゲームの土台を作ります。


2-1. メインカメラの設定

まずは、メインカメラの背景色を変更して、ゲームの雰囲気を整えます。

手順

  1. ヒエラルキーウィンドウMain Camera を選択
  2. インスペクターウィンドウBackground の色を変更

好きな背景色に設定して、ゲームの世界観を作りましょう!
例えば、格闘ゲームなら少し暗めの色を使うと雰囲気が出ますね。


2-2. タイルマップを配置

次に、キャラクターが動く**ステージ(床)**を作成します。
UnityのTilemapを使うことで、簡単に背景や床を作成できます。

手順

  1. ヒエラルキーウィンドウを右クリック
  2. 2D ObjectTilemapRectangular を選択
  3. Tilemapオブジェクトが作成される

次に、アセットのスプライトを使って床を作成します。
使用するアセット:Bandits Pixel Art

タイルを配置する

  1. Tile Palette ウィンドウを開く(Window2DTile Palette
  2. Create New Palette をクリックし、新しいパレットを作成
  3. アセットに入っているスプライトをTile Paletteにドラッグ&ドロップ
  4. Tilemapブラシツール で床を描く

2-3. コライダーを設定

キャラクターが床を通り抜けないように、Tilemapにコライダーを追加します。

手順

  1. Tilemapを選択し、インスペクターウィンドウを開く
  2. Add Component をクリックし、 TilemapCollider2D を追加
  3. さらに CompositeCollider2D を追加
  4. TilemapCollider2DUsed by Composite にチェックを入れる
  5. Rigidbody2Dを追加し、 Body TypeStatic に設定

これで、床のコライダーが1つの大きな当たり判定になり、つなぎ目がなくなります!


まとめ

メインカメラの背景色を変更して、ゲームの雰囲気を整える
Tilemapを使って床を作成し、スプライトを配置
TilemapCollider2D & CompositeCollider2D を追加して当たり判定を設定

これで、キャラクターが立つステージの準備が完了しました!
次は、いよいよキャラクターを配置していきます! 🎮🔥




3. キャラクターの配置とアニメーションの準備

ステージの準備ができたので、プレイヤーキャラクターを配置していきましょう!
今回は、アセットに含まれるスプライトを使ってキャラクターを設置し、アニメーションを作成します。


3-1. キャラクターを配置する

まずは、アセットのスプライトを使って、プレイヤーキャラクターをヒエラルキーに配置します。

手順

  1. プロジェクトウィンドウSprites フォルダを開く
  2. 好きなスプライトをヒエラルキーにドラッグ&ドロップ(例:HeavyBandit_4~7)
  3. キャラクターの位置や向きを調整

ドラッグ&ドロップした時点で、キャラクターがGameビューに表示されます!


3-2. キャラクターの物理設定

キャラクターに物理演算当たり判定を設定し、ゲームの世界で正しく動くようにします。

手順

  1. ヒエラルキーでキャラクターを選択
  2. インスペクターウィンドウAdd Component をクリック
  3. Rigidbody2D を追加し、以下の設定を行う
    • Body TypeDynamic(動くオブジェクトなので)
    • Freeze Rotation Zチェックを入れる(回転防止)
  4. BoxCollider2D を追加し、キャラクターの大きさに合わせて調整

これでキャラクターが物理演算を持ち、床の上に立つ準備ができました!
複数選択してドラッグ&ドロップした時にanimetionを作成しているので、再生するとキャラクターが動きます。


3-3. 移動アニメーションの準備

プレイヤーの移動アニメーションを作成して、動きをよりリアルにしましょう!
Unityでは、スプライトを複数選択してドラッグ&ドロップするだけで、簡単にアニメーションを作れます。

手順

  1. プロジェクトウィンドウで Sprites フォルダを開く
  2. HeavyBandit_8~15まとめて選択
  3. ヒエラルキーのキャラクターにドラッグ&ドロップ
  4. Animation ウィンドウが開くので、名前を Player_Run にして保存

💡 この方法で、敵キャラクターのアニメーションも簡単に作成できます!


3-4. アニメーションの速度調整

作成したアニメーションの速度を調整して、動きを自然にしましょう。

手順

  1. WindowAnimationAnimation ウィンドウを開く
  2. Player_Run アニメーションを選択
  3. キーフレーム(ポイント)をすべて選択
  4. ドラッグで縮めるor伸ばす(動きを速く or 遅くできる)

まとめ

キャラクターをヒエラルキーに配置して、位置と向きを調整
Rigidbody2D & BoxCollider2D を追加して、物理演算と当たり判定を設定
スプライトをドラッグ&ドロップしてアニメーションを作成
Animationウィンドウで速度調整し、スムーズな動きを実現

これで、キャラクターが正しく配置され、アニメーションが再生される準備が完了!
次は、プレイヤーの移動処理をスクリプトで実装していきます! 🎮🔥




4. プレイヤーの移動処理

キャラクターの配置とアニメーションができたので、次はプレイヤーを移動できるようにするスクリプトを作成します!
キーボードの「← →」キーを押すとプレイヤーが移動し、向きが変わるようにしていきます。


4-1. C#スクリプトの作成

Unityでキャラクターを動かすには、C#スクリプトを使ってプログラムを記述します。

手順

  1. プロジェクトウィンドウを右クリック
  2. CreateC# Script を選択
  3. スクリプト名を PlayerManager に変更
  4. 作成した PlayerManagerプレイヤーオブジェクトにドラッグ&ドロップしてアタッチ

4-2. プレイヤーの移動処理を記述

スクリプトを開いて、以下のコードを入力してください。

using UnityEngine;

public class PlayerManager : MonoBehaviour
{
    // 移動速度
    public float moveSpeed = 3f;
    Rigidbody2D rb;

    void Start()
    {
        // Rigidbody2Dを取得
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        // 方向キーの入力を取得
        float x = Input.GetAxisRaw("Horizontal");

        // 左右の入力に応じてプレイヤーの向きを変更
        if (x > 0)
        {
            transform.localScale = new Vector3(1, 1, 1);
        }
        if (x < 0)
        {
            transform.localScale = new Vector3(-1, 1, 1);
        }

        // 移動処理
        rb.velocity = new Vector2(x * moveSpeed, rb.velocity.y);
    }
}

4-3. スクリプトの動作確認

このスクリプトを適用することで、キーボードの「← →」キーを押すとプレイヤーが左右に移動するようになります!
また、移動方向に応じてプレイヤーの向きが反転するため、自然な動きになります。

試しにプレイボタン(▶️)を押して動作を確認してみましょう!


4-4. プレイヤーの回転防止

移動時にキャラクターが回転してしまう場合は、Rigidbody2Dの回転を固定しておきましょう。

手順

  1. ヒエラルキーでプレイヤーを選択
  2. インスペクターで Rigidbody2D を開く
  3. ConstraintsFreeze Rotation Zチェックを入れる

💡 これでプレイヤーが転倒せず、スムーズに動くようになります!


まとめ

C#スクリプト「PlayerManager」を作成し、プレイヤーを移動できるようにする
キーボードの入力に応じて移動&向きを変更
Rigidbody2Dの「Freeze Rotation Z」を有効化して、キャラクターが回転しないようにする

これで、プレイヤーが自由に移動できるようになりました!
次は、移動アニメーションを設定して、動きに合わせてアニメーションを切り替えましょう! 🎮🔥




5. アニメーションの切り替え

プレイヤーが移動できるようになったので、次は移動に応じてアニメーションを切り替える処理を追加していきます!
例えば、静止しているときは待機アニメーション、移動しているときは走るアニメーションになるように設定します。


5-1. アニメーションの遷移(Transition)の作成

アニメーションがプレイヤーの動きに応じて切り替わるように、Animatorで遷移を設定します。

手順

  1. プロジェクトウィンドウでアニメーションコントローラーをダブルクリック(例:PlayerAnimator
  2. Animator ウィンドウが開くので、以下の状態を設定
    • Idle(待機アニメーション)を Entry にする
    • Run(移動アニメーション)を追加
  3. Idle を右クリックして Make Transition を選択し、Run に矢印をつなぐ
  4. Run から Idle にも同様に矢印をつなぐ

5-2. 遷移条件(Conditions)の設定

アニメーションの切り替えをスムーズにするために、**条件(Conditions)**を設定します。

手順

  1. Animator ウィンドウで、Idle → Run の矢印をクリック
  2. インスペクターウィンドウで以下を変更
    • Has Exit Time のチェックを外す
    • Transition Duration0 にする(アニメーションが即座に切り替わるように)
  3. パラメーター(Parameters)を追加
    • + ボタンをクリックし、float 変数を Speed として作成
  4. Conditions に以下を追加
    • Speed > 0.1 のとき、IdleRun に切り替え
    • Speed < 0.1 のとき、RunIdle に戻る

5-3. スクリプトでアニメーションを制御

設定した Speed の値をプレイヤーの移動速度に応じて変更するスクリプトを記述します。

手順

  1. すでに作成した PlayerManager スクリプトを開く
  2. 以下のコードを追加する
using UnityEngine;

public class PlayerManager : MonoBehaviour
{
    public float moveSpeed = 3f;
    Rigidbody2D rb;
    Animator animator;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        float x = Input.GetAxisRaw("Horizontal");

        if (x > 0)
        {
            transform.localScale = new Vector3(1, 1, 1);
        }
        if (x < 0)
        {
            transform.localScale = new Vector3(-1, 1, 1);
        }

        rb.velocity = new Vector2(x * moveSpeed, rb.velocity.y);

        // スピードをAnimatorに送る
        animator.SetFloat("Speed", Mathf.Abs(rb.velocity.x));
    }
}

5-4. 動作確認

ゲームを再生(▶️ボタン)し、キーボードの「← →」キーでプレイヤーを移動
止まっているときは待機アニメーション(Idle)
移動すると走るアニメーション(Run)

🎉 これで、プレイヤーの動きに応じてアニメーションが自然に切り替わるようになりました! 🎉


**Animatorの設定やスクリプトでの制御を手動でやるのは大変…**と感じた方には、
Universal Fighting Engine 2 Basic がおすすめ!
このアセットなら、既存のアニメーションを簡単に設定でき、コンボシステムやAIまで組み込み可能
手間をかけずに、本格的な格闘ゲームを作りたいなら、ぜひチェックしてみてください! 🔥


まとめ

Animatorを設定して、Idle(待機)とRun(移動)のアニメーションを追加
Animatorの遷移(Transition)を設定して、動きに応じて切り替える
スクリプトで Speed の値を変更し、アニメーションを制御する

これで、キャラクターの移動に連動したアニメーションが完成しました!
次は、攻撃アクションの追加や敵キャラの動きを実装して、さらにゲームらしくしていきましょう!🔥🎮




🎮 まとめ

今回の内容をしっかり理解すれば、2D格闘ゲームの基礎がバッチリ身につきます!
まずはプレイヤーの動きを完璧にし、次のステップへ進んでいきましょう!💪🔥

次回は、攻撃アクションなどを追加して、ゲームをさらに面白くしていきます!
引き続き、一緒にUnityでゲーム開発を楽しんでいきましょう! 🚀🎮


あわせて読みたい

2D格闘ゲームをさらにレベルアップさせたい方は、以下の記事もぜひチェックしてみてください!


よくある質問(FAQ)

Q
タイルマップにコライダーを設定する方法は?
A

Tilemap に TilemapCollider2D を追加し、「Used by Composite」にチェックを入れ、CompositeCollider2D を追加すると、つなぎ目がなくなります。

Q
プレイヤーのアニメーションが切り替わらない場合の対処法は?
A

Animator の Parameters に適切な float 変数(Speed)を追加し、コードで animator.SetFloat(“Speed”, Mathf.Abs(rb.velocity.x)) を設定してください。

Q
移動時にプレイヤーが回転してしまうのはなぜ?
A

Rigidbody2D の「Freeze Rotation Z」にチェックを入れると回転を防ぐことができます。

C-BA Unity-memo
タイトルとURLをコピーしました