kuront’s blog

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

【Unity】RPG制作 その9- プレイヤーのステータス成長処理

 前回はプレイヤー死亡時の処理と戦闘終了時の経験値とお金の入手処理を実装しました。今回はプレイヤーの能力経験値が一定値溜まった時にプレイヤー能力を上げる処理を実装していきます。
 最初に、ステータスのデータを扱いやすくするために、能力の項目を列挙型で宣言しておきます。

 


クリックで展開

更にステータスを上昇させる際に使用する一時変数のDictionary型を宣言します。

 


クリックで展開

 このstatusUpCountには能力ごとに能力値を1上げる回数を格納します。(Exp100につき能力を1上昇させる)その回数を調べてリストに格納する関数と初期化関数,、実際にプレイヤーの能力を上げる関数を次のように定義します。

 


クリックで展開

 とりあえずこの関数を戦闘終了後に呼び出します。

 


クリックで展開

 これで経験値が一定値貯まったらプレイヤーのステータスを上げる処理が実装できました。ただ、今のままだとステータスが上がったかどうかが目で見て確認できないため、能力値が一つでも上がった場合は、成長がわかるUIを表示するようにします。
 経験値取得表とステータス上昇表を画像のように作成しました。

f:id:kuront:20210921215838p:plain

f:id:kuront:20210922044733p:plain

 戦闘終了時にこれらのUIを表示します。スクリプトを3つ新規作成し、名前をそれぞれExpList,GrowList,Grow_ExpUIManagerとします。ExpList.csを開き以下のように記述します。

 


クリックで展開

 ExpList.csを先ほど作成したUIのExpListに貼り付け、BattleManagerの変数に渡します。このスクリプトでは、戦闘終了時に表示する能力経験値の取得表を表示し、経験値の貯まり具合をゲージで視覚化します。元々の数値から少しづつ経験値加算する表現をMathf.Lerp関数で実装しています。
 次にGrowList.csを次のように記述します。
 

 


クリックで展開

 このスクリプトを"GrowList"ゲームオブジェクトに渡します。このスクリプトは能力が上昇した際に表示する能力のもとの値と増加した値を、能力ごとにテキストに書き表すものです。
それぞれコルーチンのWaitUntil関数を使ってマウスクリック(あるいはタッチ)したら表を閉じるようにしています。
 そしてGrow_ExpUIManager.csを次のように記述します。

 


クリックで展開

 このスクリプトでは、ExpListとGrowListの表示非表示の制御を行います。
 以上のスクリプトを制作したら、BattleManageで以下のように処理を実装します。


 


クリックで展開

BattleManagerのEndBattle関数を以下のように記述します。

 


クリックで展開

 経験値表と能力上昇表をコルーチンを使って表示します。能力上昇表は能力が一つでも上昇した場合のみ表示します。

実際にテストするとこんな感じです。

youtu.be

今回は以上です。