kuront’s blog

主にUnityでのゲーム制作やってます。

【Unity】RPG制作 その8- プレイヤー死亡時処理、戦闘勝利時処理(経験値、お金)

 前回は戦闘時のプレイヤーと敵の行動順の処理を実装しました。今回はプレイヤー死亡時の処理と、戦闘勝利時の処理を実装していきたいと思います。
BattleManagerを開き、以下の部分を修正します。

 


クリックで展開

PlayerDeathはプレイヤーがやられた時に呼び出される関数です。この関数をIEnumeratoで定義し、プレーヤーのHPが0になった時に呼び出すようにします。questManager.GotoTown()は単に"Town"シーンに遷移する関数です。

 


クリックで展開

 EnemyTurn関数で敵の攻撃の処理を終えた後にplayer.hp<0かどうかを判定し、trueであればPlayerDeathコルーチンを開始します。
 次は経験値とお金の実装をします。新規でGameManager.csを作成し、ヒエラルキーに同名のゲームオブジェクトを作成して、GameManager.csを貼り付けます。GameManager.csを作成し、次のように記述します。

 


クリックで展開

 ゲームオブジェクトをシングルトンにして全てのシーンで共有できるようにします。中身は今は単にお金を保持するのみです。
それからプレイヤーの情報もシーンが変わっても保持するようにしたいので、PlayerManager.csの先頭に以下の記述をしてシングルトンにしておきます。

 


クリックで展開

 次にバトル中に獲得したお金や能力経験値を一時的に保持しておくスクリプトを作成します。BattkeResultスクリプトを新規作成し、次のように記述します。

 


クリックで展開

戦闘開始時にこのクラスのコンストラクタで初期化し、敵撃破時にAddGainGoldとAddGainExpを呼び出します。

 


クリックで展開

 


クリックで展開

 更に、戦闘が終了した時に、battleResultが保持していた能力経験値とゴールドをPlayerManagerの能力経験値とゴールドに加算します。

 


クリックで展開

これで戦闘で得たお金と経験値を入手する処理が完成しました。

f:id:kuront:20210920191148p:plain

今回はここまでです。