kuront’s blog

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

【Unity】RPG制作 その14-攻撃アイテム使用処理

 前回は戦闘時の回復アイテムの処理の実装を行いました。今回は攻撃アイテムの実装をやっていきます。

 アイテムのデータに命中率を設定したいので、itemData.csに以下の記述を追加しておきます。

[Header("攻撃アイテムの場合の命中率")] public int hitRate = 95;

 itemEventに命中率の判定を行う関数を定義します。

 


クリックで展開

アイテムを使用した際に、何かしらの効果があった場合にtrueにするbool変数を宣言します。

 


クリックで展開

 それから、itemDataをもとに、アイテムの対象者に状態異常を付与する関数を作成します。

 


クリックで展開

 ここでTermManagerという名前のクラスが使われていますが、これは主にアイテムのデータに応じて定義されたメッセージ(script型)を返す関数を定義しているクラスです。TermManagerの中身はこんな感じになっています。

 


クリックで展開

 他のも色々定義されたいますが、今回使うのはGet_STATUSCONDI_Message関数とGet_STATUS_EnforcedMessage関数とGet_STATUS_WeakenedMessage関数です。

 次はアイテムの使用対象にステータス強化・弱体を付与する関数を作成します。

 


クリックで展開

 ステータスの強化率はitemDataのenforceRate1(~3)で設定するのですが、この数値が+の場合は強化、-の場合は弱体です。なので、enforceRateの値が+か-か判定して、条件分岐させています。EnemyStatusEnforce関数とEnemyStatusWeakened関数はそれぞれステータスが強化・弱体された時の強化率やターン数をEnemyManagerに設定したり、メッセージを表示する関数です。

 


クリックで展開

 次はItemUIが作成された時にそれぞれのアイテムのButtonのOnclickにitemEvent登録される関数、SetItemTargetPanel関数に処理を追加していきます。

 


クリックで展開
こちらに処理を追加していくのですが、そのまえにバグの修正をします。
CommandUIManager.csに「やめる」ボタンを押した時に、itemUsePanelとuseItemMessaagePanelを閉じる処理を追加します。

 


クリックで展開

 これでItemUIが開いているときに「やめる」ボタンを押すとItemUIを閉じてCommandUIを開き、UseItemMessagePanelが表示されている時に「やめる」ボタンを押すとUseItemMessagePanelが閉じてItemUIが再度開くようになりました。
 次はATTACKアイテムを選択した時に、Enemyをタップした時に実行する関数を変更する処理を実装します。EnemyManagerでEnemyがタップされた時に実行する関数の変数tapActionを初期化する関数を作成します。

 


クリックで展開

 準備ができたので、先程のAttackアイテム使用時の箇所に処理を追加します。

 


クリックで展開

 やっていることをざっくり説明すると、Attackアイテムを選択した場合は、Enemyのタップ処理を新規に作成したAttackItemEventの関数に登録しなおしています。この処理を行った場合、処理が行われたあとにAttackItemEventを破棄しておきます。

 


クリックで展開

それから、通常攻撃を選択したときは、enemyのタップ処理に通常攻撃時の処理を登録し直すようにします。そのための関数をbattleManagerに新しく作成します。

 


クリックで展開

この関数を「攻撃」コマンドを押した時に呼び出すようにします。

実行するとこんな感じになります。

youtu.be

 次回は探索するステージの制作をしていきます。