kuront’s blog

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

【Unity】RPG制作 その18-探索時のイベント処理

 今回は探索時にイベントを発生させる処理を作っていきます。探索時にDangeon関連の処理を実行できるようにQuestManager.csでDangeonController型の変数を定義します。

 


クリックで展開

 次に、DangeonController.csに現在のプレイヤーの座標に配置されているイベントのIDを取得する関数を定義します。

 


クリックで展開

 イベントが配置されている地点に到達したらダイアログを表示する関数を宣言します。

 


クリックで展開

 eventIDは関数の外でint型で定義しておきます。次に、イベントを発動させるActionButtonを作成します。

f:id:kuront:20211013132801p:plain

StageUIManager.csでActionButtonを制御できるようにしておきます。

 


クリックで展開

ActionButtonはイベントが配置されている座標でのみ表示したいので、bool型のisEventPosition変数で処理の分岐をさせています。Questmanager.csのSearchingコルーチンで以下の処理を追加して探索後にボタンをアクティブにするかどうかを判定させて、フラグの変更も行います。

 


クリックで展開
これでActionButtonの制御は実装できました。次はActionButtonを押した時にイベントを発動するようにします。


 


クリックで展開

イベントを4種類作成しました。IEDangeonEventProcessの処理に入ったら現在地のeventIDを取得し、IDが1~4の場合は各イベントを実行します。イベントはdangeonEventクラスで処理を行っていくのですが、イベントを数回発生させるタイプのイベントの場合(ここでは採掘イベント、伐採イベント、釣りイベント)、RegistryEvent関数でDangeonEventMemory型の配列にEventのデータを登録しておきます。DangeonEventMemoryクラスでは、イベントの残り回数やX,Y座標、dangeonEventクラスを保持できるのですが、これらの情報を使用して、イベントをマップ上に残しておくか、消すべきかを判定させます。


 ちなみにIEDangionEventProcessのスイッチ内イベント処理の中身はこんな感じです。

 


クリックで展開

 採掘イベントのコードだけ書いています。(全部載せると膨大な量になるので・・・)採掘イベントの場合は採掘スキルとつるはしが必要になるのでつるはしの所持個数と採掘スキルを所持しているかで処理を分けています。

実際に動かし見ると以下の動画のようになります。

youtu.be

これで探索時にイベントを実行できるようになりました。このイベントを自動的に配置できるようにしたいですが、次回は先にダンジョンの次の階層に進む処理を実装していきたいと思います。