i-school - 3Dレールガンシューティング 手順13
 ミッションの設定とイベントの登録を行うためのクラスの作成を行います。
この手順で準備をした情報を元に、次の手順ではイベントの生成を行う機能を実装します。



手順13 ーミッションの設定とイベントの登録機能ー

 新しい学習内容は、以下の通りです。

<学習内容>
 ・enum のみのスクリプトの復習



設計


 本ゲームにおいてミッションとは、各パスの地点において発生するイベント群のことです。
ミッションの中に、イベントが含まれています。

 イベントとは敵やアイテムなどの総称です。これらはスクリプトから動的に生成を行うようにします。



イメージ図です。

 移動地点1 ー ミッションなし

 移動地点2 ー ミッションあり ー イベント(敵1)
                   イベント(敵2)


 移動地点3 ー ミッションなし

 移動地点4 ー ミッションなし

 移動地点5 ー ミッションあり ー イベント(敵1)
                   イベント(敵2)

イベント(ボス1)




 各パスごとにミッションが発生するかどうかをインスペクターより設定し、
その後、ミッション内のイベントの生成地点、敵に例えるなら敵の生成される地点の製作を行います。

 この情報を元にして、各スクリプトが連動して、各パスへ到着するたびにミッションの有無をチェックし、
ミッションが発生する地点においては、さらにイベントの情報を参照して、敵の生成を指定した地点に行います。

 情報のみを参照するような設計にすることで、情報が変われば、自動的に生成される敵の種類や位置が変更になるようにしています。

 難しい処理が続きますので、理解を深めながら進めていってください。


ClearConditionsType スクリプトを作成する


 ミッションが発生した場合の、ミッションのクリア条件を事前に enum を作成して列挙子として登録しておきます。
今回は2種類登録しておきます。他にもクリア条件を増やす場合には、こちらに列挙子を追加します。

 敵の移動種類を登録する際に作成した enum と同じように、今回も enum のみのスクリプトを作成します。


ClearConditionsType.cs

<= クリックすると開きます。



MissionEventDetail スクリプトを作成する


 ミッションが発生する地点の PathTran ゲームオブジェクトにそれぞれアタッチするスクリプトです。
例えば、RailPathData 内に PathTran ゲームオブジェクトが5つあり、そのうちの2か所でミッションを発生させたい場合には、
それらの PathTran ゲームオブジェクトにこの MissionEventDetail スクリプトを1つずつアタッチして、インスペクターより各情報を変数内にアサインして登録します。


MissionEventDetail.cs

<= クリックすると開きます。



RailPathTran ゲームオブジェクト内の PathTran ゲームオブジェクトに MissionEventDetail スクリプトをアタッチして設定を行う


 ミッションを発生させたい地点のゲームオブジェクトに MissionEventDetail スクリプトをアタッチして設定を行います。

 各移動地点は各 PathTran ゲームオブジェクトによって構成されていますので、任意の PathTran ゲームオブジェクトに MissionEventDetail スクリプトをアタッチしてください。
その後、PathTran ゲームオブジェクトの子オブジェクトとして、イベントの発生位置となる地点を作成します。

 Create Empty を選択して、新しいゲームオブジェクトを PathTran ゲームオブジェクトの子オブジェクトとして作成します。名前は EventTran にしておきます。
同時に発生するイベントの数だけ用意しておきます。同じ位置で問題なければ、イベント数とイベントの発生地点が異なっていても問題ありません。





 その後、PathTran ゲームオブジェクトにアタッチした MissionEventDetail スクリプトの設定を行います。

 下記の画像を参考にして設定してください。


PathTran_0 ゲームオブジェクト ミッション内で発生するイベントは1つ



PathTran_3 ゲームオブジェクト ミッション内で発生するイベントは2つ



RailPathData スクリプトを修正する


 先ほど作成した MissionEventDetails スクリプトの情報をゲーム内で利用できるようにするため、
RailPathData スクリプトの修正を行います。


RailPathData.cs

<= クリックすると開きます。



RailPathData ゲームオブジェクトの設定を行う


 RailPathData ゲームオブジェクトのインスペクターを確認します。
RailPathData スクリプトを修正しましたので、新しい変数が追加されています。

 このうち、PathDataDetails 配列内の、ミッションが発生する地点の各 isMissionTrigger 変数にチェックを入れてオンの状態にします。
これでミッションで発生するようになります。

 isMissionTrigger 変数にチェックを入れたら、同じ配列の要素内の MissionEventDetails 変数に、PathTran ゲームオブジェクトをアサインします。
チェックのない場合には、アサインの必要はありません。

 この例では、PathTran_0 ゲームオブジェクトの地点と PathTran_3 ゲームオブジェクトの地点で
ミッションを発生させたいため、この2つの地点の isMissionTrigger 変数にチェックを入れて、
各 MissionEventDetails 変数には、各 PathTran ゲームオブジェクトをアサインして MissionEventDetails スクリプトの情報を登録しています。


RailPathData ゲームオブジェクト 構成図



RailPathData ゲームオブジェクト インスペクター画像





 以上でこの手順は終了です。

 => 次は 手順14 ーイベントの生成ー です。