kuront’s blog

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

【Unity】RPG制作 その2 -バトルコマンドの作成

今回は戦闘時のコマンドのUIを実装していきたいと思います



 

・攻撃方法を敵をタップするのではなく、攻撃用のボタンを押すように変更した。

ヒエラルキーCanvasを新規作成、名前をCommandUICanvasに変更。子オブジェクトにButtonを3つ配置。テキストはそれぞれ「攻撃」「特殊」「やめる」に変更。「やめる」ボタンは、「攻撃」ボタンを押して敵を選択するときに、コマンドの選択に戻りたい時に使うボタンなので、コマンドを選択するときは非表示に、ターゲットを選択するときに表示させるようにする。「攻撃」ボタンは押したら「攻撃」ボタンを非表示にする。

見た目はこんな感じ


f:id:kuront:20210819053537p:plain

スクリプト「CommandManager.cs」を新規作成。CommandUICanvasに貼り付ける。
スクリプト「CommandManager.cs」を編集。


クリックで展開

公開したボタン用の変数にそれぞれCommandUICanvasのボタンを割り当てる.。
関数も各々作成していく。(SetBattleCommand関数、SetCommandForTargetSelect)
戦闘開始時に実行される、BattleManager.csのSetUp関数に、

commandUI.gameObject.SetActive(true);
commandUI.SetBattleCommand();

を追加し、戦闘開始時にコマンドが使えるようにする。さらに戦闘開始時には敵をタップできないように、SetUp関数内の以下の処理を削除

canAttackTap = true;

攻撃ボタンが押された時に、CommandUIManagerのSetCommandForTargetを、キャンセルボタンが押された時にCommandUIManagerの
SetBattleCommandをそ実行するように、「攻撃」ボタンと「やめる」ボタンのButtonコンポーネントのOn Click()のリストにそれぞれ関数を登録する。さらに、「攻撃」ボタン押下でBattleManage.csのCanAttackTapをtrueに、「やめる」ボタン押下でfalseになるように設定、敵をタップしたらCommandUIを非表示にする。敵のターンが終了したらサイドCommandUIを表示する。


QuestManagerのStart関数にcommandUIの非アクティブ処理を追加。敵とエンカウントしたらアクティブに、戦闘が終了したら非アクティブにする。


実装後のQuestManager.csとBattleManager.csのコードはそれぞれこんな感じです。


クリックで展開
 


クリックで展開

あとついでに、ダイアログにエネミーの名前を反映するようにしておきました。
今回は以上です。