Unityに関連する記事です

 前回の手順で武器取得用のポップアップウインドウ(ゲームオブジェクト群)を作成しました。

 この手順では、ミッションの1つとして武器取得のイベントを発生させて武器取得用のポップアップウインドウを表示し、
取得ボタンを押すことで武器を取得してゲーム内で利用できるようにする機能を実装します。



発展2 ー武器取得イベントの発生と武器取得ポップアップウインドウの表示ー


<実装動画 
動画ファイルへのリンク


<実装動画◆
動画ファイルへのリンク



設計


 ミッションの発生機能については実装済です。
現在はミッションにおいては敵の生成のみが発生していますので、こちらに分岐を追加して
ミッションの発生時に、敵の生成を行うか、あるいは武器の取得イベントを行うかを判定するようにします。

 武器の取得イベントについては、前回の手順で作成した UI を画面に表示し、取得選択を行えるようにします。
このとき、毎回同じ武器の取得にならないように、どの武器が取得できるかを WeaponDataSO スクリプタブル・オブジェクトから参照し、
同じ UI でありながら、様々な武器の取得が行えるように振る舞いを変える形で実装を行います。

 プログラムにおいて振る舞いを変えることは重要な要素の1つです。
しっかりと学習し、応用できるようにしていきましょう。


EventType スクリプトを作成する


 ミッションの種類を事前に enum として登録しておくようにします。
こちらで提示している列挙子の種類は任意です。Enemy と Weapon だけ含めていただければ、自由に設定してください。

 この情報を設定することにより、ミッションの分岐時に列挙子の内容で分岐判定を行うようにします。

 enum のみのスクリプトですので、アタッチする必要はありません。(MonoBehaviour クラスを継承していないため、アタッチ出来ません。)


EventType cs

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



MissionEventDetail スクリプトを修正する


ミッションが発生する地点の PathTran ゲームオブジェクトにそれぞれアタッチされているスクリプトです。
こちらを修正し、EventType 型の情報を追加し、移動先で発生するミッションの内容を登録出来るようにします。


MissionEventDetail.cs

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



RailPathData ゲームオブジェクトの子オブジェクトである PathTran ゲームオブジェクトの設定を行う


 PathTran ゲームオブジェクトは複数ありますので、そのうちの1つの情報を変更して、
ミッションを発生するようにした上で、EventTypes 変巣の Size を 1 にして、Element 0 に Weapon を設定します。

 EventNos 変数の Size も 1 にして、Element 0 には 0 〜 2 を設定します。
この番号は取得できる武器の番号を指定しています。そのため、0 〜 2 の番号が設定されている武器が取得可能になります。 

 デバッグしやすいようになるべく手前のゲームオブジェクトに設定を行うようにしましょう。




WeaponEventInfo スクリプトを作成する


前回の手順で作成した WeaponEventInfo ゲームオブジェクト群を制御するためのスクリプトを作成します。

 このゲームオブジェクト群を作成する際には、どういった役割を持たせて作成したかを思い出して、
どのゲームオブジェクトのどのコンポーネントを制御したいのかを考えながら、処理を考えてみましょう。


WeaponEventInfo .cs

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


 スクリプトを作成したらセーブします。


武器の取得用のゲームオブジェクトに WeaponEventInfo スクリプトをアタッチして設定を行う


 前回の手順で作成した武器の取得用のゲームオブジェクト(参考例では WeaponEventInfoSet ゲームオブジェクト)に
WeaponEventInfo スクリプトをアタッチして、インスペクターから各変数の設定を行います。

 どのような情報をアサインすれば指定したコンポーネントの制御が行えるようになるのかを
自分で考えながら、ヒエラルキーにあるゲームオブジェクトのアサインを行います。




 この手順はこれで完了です。


GameManager スクリプトを修正する


 作成した武器の取得用のゲームオブジェクトを登録し、ミッション内で武器の取得イベントが発生した際に
ゲーム画面に武器の取得用のゲームオブジェクトを表示させる制御を実装します。

 Start メソッドの TODO の部分を実装するとともに、PreparateMission メソッド、ObservateMission メソッド、EndMission メソッド内の各 TODO の部分の実装を行います。
いずれも武器の取得イベントの TODO として記載してありますので、どういった処理が適切なのかを自分でも考えてみてください。

 IsMissionTrigger 変数を利用して、ミッションが発生するかどうかを確認していますので、
その部分に着目しながら、ミッション発生時に、どのようにしてイベントの分岐ー敵の出現と武器の取得ーを行えばいいかを考えてみてください。


GameManager.cs

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


 スクリプトを修正したらセーブします。


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


 GameManager スクリプトを修正しましたので、インスペクターより新しく追加した変数の設定を行います。

 WeaponEventInfo 変数に、Canvas の子オブジェクトである武器の取得用のゲームオブジェクト(参考例では WeaponEventInfoSet ゲームオブジェクト)を
ドラッグアンドドロップしてアサインしてください。





 以上で設定は完了です。


ゲームを実行して動作を確認する


 すべての設定と実装が完成しましたので、どのような機能が実装されたのかを確認します。

 処理の内容を理解した上でゲームを実行して、ミッションを発生させてください。
敵の生成ではなく、武器の取得用の WeaponEventInfo ウインドウが表示されれば制御成功です。

 続いて、ウインドウ内の武器取得用のボタンを押して、武器を取得してください。
GameData クラスの List に取得した武器の情報が追加されて、ウインドウが非表示になれば、こちらも制御成功です。

 武器を取得しない場合の処理も同じように確認します。
こちらを選択した場合には GameData クラスには武器は追加されず、ウインドウが非表示になれば成功です。

 複数の制御確認内容がありますので、しっかりと確認してください。


<実装動画 
動画ファイルへのリンク


<実装動画◆
動画ファイルへのリンク



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

 => 次は 発展3 ーステージデータの作成ー です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます