【Unity】RPGを作るチュートリアルその39 戦闘開始時の処理の作成

【Unity】RPGを作るチュートリアルその39 戦闘開始時の処理の作成

シンプルなRPGをUnityで作るチュートリアルシリーズの39回目です。

第38回ではテスト用に戦闘を開始するための処理を作成しました。

今回は戦闘開始時の処理を担当するクラスを作成していきます。このクラス内では、他の様々なクラスの処理を呼び出したいので、まずは枠組みだけ作って、必要なクラスを作っていく流れになりそうです。

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

シンプルなRPGを作る上でどんな作業が必要か、どんな順番で作っていくと良さそうか、別ページで検討しました。基本的にこの流れに沿って進めていきます。

 

チュートリアルの一覧

このシリーズ全体の一覧は以下のページにまとめています。

 

前回の内容

前回はテスト用に戦闘を開始するための処理を作成しました。

 

今回作成する範囲

以前紹介した図をもとに、戦闘機能のどの部分を実装していくかをざっくりと赤い四角で囲みました。

 

戦闘を開始するための処理を作っていきます
戦闘を開始するための処理を作っていきます

 

作りたいものとしては、戦闘開始時の準備処理を担当するクラスです。このクラスでは、

  • 戦闘関連のスプライトの表示
  • 戦闘関連のUIの表示

なども行いたいと思います。実際の処理としては別のクラスが担当するのですが、それを呼び出すイメージです。

そのため、今回の作業では戦闘開始時の準備処理を担当するクラスの枠組みだけを作っておいて、スプライト表示やUI表示のクラス作成を行なった後、改めてこのクラスの処理を入れていきたいと思います。

UI表示のクラスに関しては、「BattleManager」の作成回でも少しお伝えしましたが、UIのウィンドウのコントローラと、実際にUIを制御するコントローラをペアにして作成していくため、しばらくはそちらの作業が多くなりそうです。戦闘開始時に全部のUIの初期化をしたいのでここは頑張っていきましょう。

 

戦闘開始時の準備処理を担当するクラスを作成

まずは戦闘開始時の準備処理を担当するクラスを作成していきます。Projectウィンドウの「Assets/Scripts/Battle」のフォルダでMonoBehaviourのスクリプトを作成します。名前は [BattleStarter] にしました。

スクリプトファイルの作成
スクリプトファイルの作成

 

作成した「BattleStarter」の中身は以下のように記載しました。

現時点では、StartBattle()のメソッドに記載した流れで処理を行なっていく想定で、各メソッドを作成しています。StartBattle()以外のメソッドについては名前だけでまだ中身はありません。この後作成するスプライト関係やUI関係のクラスができてから画面にセットしていく処理を記載していきましょう。

 

BattleManagerの修正

続いて「BattleManager」から「BattleStarter」を呼び出すように修正しておきしましょう。

フィールドとして「BattleStarter」への参照を保持するようにして、StartBattle()のメソッドで「BattleStarter」を呼び出します。

変更点は

  • フィールドの追加
  • StartBattle()のメソッドの処理内容の追加

です。StartBattle()の中では戦闘フェーズやゲーム全体の状態を切り替えた後、「BattleStarter」を呼び出すようにしました。

 

スクリプトのアタッチ

スクリプトを保存したら、ゲームオブジェクトの作成してスクリプトをアタッチしましょう。Hierarchyウィンドウから「BattleParent」の下にある「Managers」の子オブジェクトとして空のゲームオブジェクトを作成します。名前は [BattleStarter] にしました。

ゲームオブジェクトの作成
ゲームオブジェクトの作成

 

作成した「BattleStarter」のゲームオブジェクトに対して、Inspectorウィンドウから「BattleStarter」のスクリプトファイルをアタッチします。

スクリプトのアタッチ
スクリプトのアタッチ

 

Hierarchyウィンドウから「BattleManager」を選択し、作成した「BattleStarter」への参照をアサインします。

参照をアサイン
参照をアサイン

 

動作確認

スクリプトをアタッチしたら動作を確認していきましょう。「BattleTester」で戦闘を開始した後、「BattleManager」を経由して「BattleStarter」の処理が呼ばれることを確認したいと思います。そのため、「BattleStarter」のStartBattle()のメソッド内にデバッグ用のメッセージを出力する処理を入れておきます。この処理はコミット時に削除予定です。

ゲームを実行した際に、以下のようにデバッグ用のメッセージがコンソールに表示されればOKです。

メッセージが表示された
メッセージが表示された

 

今回のブランチ

 

まとめ

今回は戦闘開始時の処理を担当するクラスを作成しました。戦闘開始の準備部分でもたくさんやることがあるので、順番に作っていきましょう。

次回は戦闘開始時に背景を表示したり、敵キャラクターを表示するために、スプライトを制御するクラスを作成していきます。

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!