ゲームプログラミング独学ブログ

ゲームプログラミングを初心者・未経験から独学で身に着けるための情報をまとめていきます。Unityを使った2D・3Dゲームの開発方法やゲームクリエイターになるための情報もまとめていきます。

Unityでドラクエ風RPGの作り方

この記事では、Unityを使ってドラクエ風の2D RPGを作成する方法を詳しく解説します。

初心者でも理解しやすいように、各ステップを丁寧に説明していますので、ぜひ参考にしてください。

 

UnityとC#の基礎知識

まずはUnityとC#の基本的な知識を押さえましょう。

これらの基本がわかっていれば、RPGの開発もスムーズに進みます。

 

Unityのインストールと設定

Unityをインストールして、初期設定を行います。

プロジェクトの作成方法から、必要な設定までを詳しく説明します。

 

Unityのダウンロードとインストール

まず、Unityの公式サイトから最新バージョンをダウンロードし、インストールします。

インストール後、Unity Hubを開き、新しいプロジェクトを作成しましょう。

プロジェクトの名前や保存場所を設定し、2Dテンプレートを選択します。

 

プロジェクトの作成

新しいプロジェクトを作成し、必要な設定を行います。

例えば、解像度の設定や、必要なパッケージのインポートを行います。

これで基本的な準備が整いました。

 

C#の基本文法

RPGを作るために必要なC#の基本文法を学びます。

変数の宣言方法や基本的な構文を理解しましょう。

例えば、以下のようなコードを使ってプレイヤーキャラクターの移動を実装します。

 


using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float speed = 5f;
    private Rigidbody2D rb;
    private Vector2 moveVelocity;

    void Start()
    {
        rb = GetComponent();
    }

    void Update()
    {
        Vector2 moveInput = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
        moveVelocity = moveInput.normalized * speed;
    }

    void FixedUpdate()
    {
        rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
    }
}

このコードでは、プレイヤーキャラクターが矢印キーで移動できるようになります。

 

ドラクエRPGの開発ステップ

ここからは、実際にドラクエ風のRPGを作成する具体的な手順を紹介します。

 

キャラクターの作成

プレイヤーキャラクターと敵キャラクターの作成方法を説明します。

スプライトのインポートやアニメーションの設定について詳しく解説します。

 

プレイヤーキャラクターの設定

プレイヤーキャラクターのスプライトをインポートし、アニメーションを設定します。

例えば、キャラクターが歩く際のアニメーションを設定し、スクリプトを使ってプレイヤーが操作できるようにします。

 

敵キャラクターの設定

敵キャラクターのスプライトをインポートし、アニメーションを設定します。

敵キャラクターの動きや攻撃パターンを設定し、プレイヤーと戦うためのスクリプトを作成します。

 

フィールドとマップの作成

ゲームの舞台となるフィールドとマップを作成します。

タイルマップを利用して、フィールドを構築しましょう。

 

タイルマップの作成

Unityのタイルマップ機能を使って、フィールドを作成します。

タイルマップエディターを使って、マップ上に地形やオブジェクトを配置します。

これにより、プレイヤーが探索するためのマップが完成します。

 

マップの配置と編集

作成したタイルマップにオブジェクトを配置し、編集します。

例えば、宝箱やNPCをマップに配置し、それぞれにスクリプトを追加してインタラクションを設定します。

 

バトルシステムの実装

ドラクエ風のターン制バトルシステムを実装します。

バトルの流れやコマンド選択の仕組みを構築します。

 

バトルUIの作成

バトル画面のUIを作成し、必要なコンポーネントを追加します。

例えば、プレイヤーのHPやMPを表示するためのUIを作成し、バトル時に表示されるコマンドメニューを実装します。

 

コマンド選択システムの実装

攻撃や防御などのコマンド選択システムを実装します。

プレイヤーがコマンドを選択し、敵に攻撃を仕掛けるためのスクリプトを作成します。

 

まず、バトル画面のUIを作成します。

バトル画面には、プレイヤーと敵のHPバー、MPバー、コマンドメニューを表示します。

 


using UnityEngine;
using UnityEngine.UI;

public class BattleUI : MonoBehaviour
{
    public Slider playerHPBar;
    public Slider playerMPBar;
    public Slider enemyHPBar;
    public GameObject commandMenu;

    void Start()
    {
        // 初期設定
        playerHPBar.value = 1;
        playerMPBar.value = 1;
        enemyHPBar.value = 1;
        commandMenu.SetActive(false);
    }

    public void ShowCommandMenu()
    {
        commandMenu.SetActive(true);
    }

    public void HideCommandMenu()
    {
        commandMenu.SetActive(false);
    }
}

次に、コマンド選択システムを実装します。

プレイヤーが「攻撃」、「防御」、「アイテム」、「逃げる」のいずれかを選択できるようにします。

 


using UnityEngine;

public class BattleSystem : MonoBehaviour
{
    public BattleUI battleUI;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // コマンドメニューを表示
            battleUI.ShowCommandMenu();
        }
    }

    public void OnAttack()
    {
        // 攻撃処理
        Debug.Log("攻撃!");
        battleUI.HideCommandMenu();
    }

    public void OnDefend()
    {
        // 防御処理
        Debug.Log("防御!");
        battleUI.HideCommandMenu();
    }

    public void OnItem()
    {
        // アイテム使用処理
        Debug.Log("アイテム!");
        battleUI.HideCommandMenu();
    }

    public void OnEscape()
    {
        // 逃げる処理
        Debug.Log("逃げる!");
        battleUI.HideCommandMenu();
    }
}

これにより、プレイヤーがスペースキーを押すとコマンドメニューが表示され、選択したコマンドに応じて適切な処理が実行されるようになります。

次に、敵の行動や攻撃パターンを設定します。

 



using UnityEngine;

public class EnemyAI : MonoBehaviour
{
    public void TakeAction()
    {
        int action = Random.Range(0, 3);

        switch (action)
        {
            case 0:
                Attack();
                break;
            case 1:
                Defend();
                break;
            case 2:
                UseSkill();
                break;
        }
    }

    void Attack()
    {
        Debug.Log("敵が攻撃!");
    }

    void Defend()
    {
        Debug.Log("敵が防御!");
    }

    void UseSkill()
    {
        Debug.Log("敵がスキルを使用!");
    }
}

このスクリプトを使うと、敵がランダムで攻撃、防御、スキル使用のいずれかのアクションを取るようになります。

次に、ターン制バトルの流れを管理するためのスクリプトを作成します。

 



using UnityEngine;

public class TurnManager : MonoBehaviour
{
    public BattleSystem player;
    public EnemyAI enemy;
    private bool playerTurn = true;

    void Update()
    {
        if (playerTurn)
        {
            // プレイヤーのターン
            if (Input.GetKeyDown(KeyCode.Space))
            {
                playerTurn = false;
                enemy.TakeAction();
                playerTurn = true;
            }
        }
    }
}

このスクリプトにより、プレイヤーと敵が交互にアクションを取るターン制バトルが実現します。

これで、基本的なドラクエ風のターン制バトルシステムが完成しました。

 

まとめ

  • UnityとC#の基礎知識を学ぶ
  • キャラクターの作成とアニメーション設定
  • フィールドとマップの作成
  • ターン制バトルシステムの実装

以上が、Unityを使ったドラクエRPGの基本的な作成手順です。

ゲーム開発の楽しさを感じながら、自分だけのRPGを作ってみてください。

何か問題があれば、この記事を参考にして解決してください。

頑張ってくださいね!

 

こちらのサイトを参考にしました。

feynman.co.jp