kuront’s blog

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

【Unity】RPG制作 その22-トラップイベント、扉のスイッチイベント実装

 今回は探索時のトラップイベントやスイッチで開く扉の処理を実装していきます。

 まずはじめに、DangeonController.csのInformDangeonEventコルーチンで、各々のイベントが配置されていることを知らせる処理を追加します。

 


クリックで展開

 case7~10で実行されるイベントをdangeonEvent.csで実装します。

 


クリックで展開

今度はDangeonController.csのIEDangeonEventProcessコルーチンで現在位置のイベントを実行する処理を追加します。

 


クリックで展開

IEDangeonEventProcessコルーチンで追加した各々のイベントの処理のコルーチンをDangeonEvent.csで定義します。

 


クリックで展開

スイッチで開く扉イベントは同一フロアにある青いスイッチをすべて押した時に下り階段にイベントに変わるようになっています。
実際にうまくイベントが動くかどうか試すために、新しくダンジョン第5層を作成します。DangeonMap.csのstructOfDangeonの3次元配列とposOfEventの3次元配列に5層のデータを追加します。


 


クリックで展開

structOfDangeonに5層のダンジョンの部屋構造のデータ、posOfEventに5層のイベント配置(上り階段1つと青スイッチ(OFF)2つ)、isViewRoomとisViewEventにもそれぞれ5層のデータを追加しました。
あと、新しいフロアをに入った時に一定確率でトラップイベントを生成するようにします。イベントのランダム生成はDangionMap.csのSetEventNowFloorAtRandam関数で行っているので、この関数の処理を変更します。

 


クリックで展開

もともとposOfEventに0~4のランダムなIDを入れていたのを、新たにeventIDListを作成して、ListのIDの中からランダムに代入するように変更しました。
 このまま実行するとトラップイベントが実行される前にダンジョンマップとボタンなどが表示されてしまうので、それを直します。QuestManagerに新たに処理を追加します。

 


クリックで展開

 部屋の移動を完了した時に呼び出す処理を二つに分けました。OnCompleteMoveRoom2はバトル、イベントに突入していても呼び出す関数で、OnCompleteMoveRoomはバトル、イベントに突入しなかった時に呼び出す関数です。バトル、イベントに突入した場合はボタンとマップを表示したくないので、これらの表示関数はOnCompleteMoveRoom2に登録するようにします。

f:id:kuront:20211026172511p:plain

 現状QuestManager.csのSerachingの後半でプレイヤーがイベントが配置されている位置に来た時の処理を描いているので、ここにトラップイベントの座標に来た時の処理を追加します。

 


クリックで展開

トラップイベントの場合のみ処理を分岐させています。個々の処理は後々変更があると思います。
さらにトラップイベントが終わったあとにマップの表示と、ボタンの表示、nowEventフラグをfalseにします。

 


クリックで展開

 DangeonMap.csにイベントのアイコンを更新する関数を作成します。

 


クリックで展開

UpdateEventIcon関数をスイッチで開く扉が開いた後と青いスイッチイベント(OFF)完了後に呼び出します。

 


クリックで展開


 


クリックで展開

これで実行すると以下の動画のようになります

youtu.be

 次回はワープイベントを作成しようと思います。