Unityに関連する記事です

 ミッション内に登録されている各イベントの生成を行います。
本ゲームでのイベントとは、敵やアイテムなどのことを指す総称です。今回は、敵の生成を行うようにします。
合わせて、生成された敵の情報を管理し、敵を倒すことで、移動が再開するようになることも確認します。


<確認動画  式榮按篁漾E┐寮言と、敵の情報を List への追加ー>
動画ファイルへのリンク



<確認動画◆ List から敵の情報の削除と移動の再開ー>
動画ファイルへのリンク



手順14 ーイベントの生成ー

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

<学習内容>
 ・既存の処理と新しい処理とを繋げて、ゲームの自動サイクル化を行う



設計


 移動の停止、および、移動の再開処理については実装済です。
ただし、現在は、各パスへ移動後、自動的に移動を再開するようになっています。
この部分に、敵の生成地点へ到達したら、そのパスで移動を停止させます。
その後、敵の生成と敵が倒されたかどうかの判定を追加して、条件を満たしたら、移動を再開する処理となるように、
既存の処理と新しい処理とを繋げることにより、ゲームの基本的なサイクルを自動的に繰り返せる機能を形成させます。

 ロジックは複雑です。内容を読み解いていくためには、配列、for 文、while 文といった基礎構文を理解していなければ、処理を読み解くことは難しいでしょう
これらの構文を組み立てて、複数の処理がつながることでロジックは構築されています。しっかりと理解をしながら進めていくようにしてください。


EventGenerator スクリプトを作成する


 イベントを生成する機能の役割を持つスクリプトを作成します。
今回は、SetUpEventGenerator メソッドの引数を利用して、外部のクラスの情報を private 修飾子の各変数に代入しています。
PrepareGenerateEnemies メソッドの引数には敵のプレファブの情報と生成位置の情報を受け取り、それを利用して、敵の自動生成処理を実装します。

 どちらも public 修飾子を持つメソッドである ため、外部のクラスから実行されることを前提に作成 しています。また、各メソッドの引数の使い方 が非常に肝になっています。
どのクラスから実行されて、どのような情報がメソッドの引数として届くようになっているのか、そしてその情報をメソッド内でどのように利用しているのかを把握しておきましょう。


EventGenerator.cs

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



EventGenerator ゲームオブジェクトを作成し、EventGenerator スクリプトがアタッチする


 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、Create Empty を選択します。
新しいゲームオブジェクトが作成されますので、名前を EventGenerator に変更します。

 先ほど作成した EventGenerator スクリプトがアタッチしておきます。
設定は特に必要ありませんので、ちゃんとアタッチされているかどうかを確認しておきます。


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



GameManager スクリプトを修正する


 作成した EventGenerator スクリプトの、初期設定を行うメソッドと、敵を生成するメソッドに対して、それぞれ命令を実行する処理を追加します。
どのタイミングで命令を実行すればいいのかを自分なりに考えてから、スクリプトの内容を確認してください。


GameManager.cs

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



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


 GameManager スクリプトを修正しましたので、このスクリプトがアタッチされている GameManager ゲームオブジェクトのインスペクターを確認します。

 PlayerController 変数と EventGenerator 変数が新しく追加されていますので、こちらにそれぞれ、
ヒエラルキーにある MainCamera_Player ゲームオブジェクトと PlayerEventGenerator ゲームオブジェクトをドラッグアンドドロップしてアサインします。
自動的に PlayerController スクリプトの情報と EventGenerator スクリプトの情報が各変数内に登録されます。

 EnemiesList 変数はそのままで問題ありません。こちらは、ゲーム実行中に情報が自動的に更新されます。


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


 以上で設定は完了です。


EnemyController スクリプト内のコメントアウトを解除する


 GameManager スクリプトへの命令処理がコメントアウトされていますので、そちらのコメントアウトを削除して、命令を実行させるようにします。

EnemyController.CalcDamage メソッド内
 gameManager.RemoveEnemyList(this);

 以上で処理の修正は完了です。


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


 RailPathData ゲームオブジェクトにアタッチされている RailPathData スクリプトの情報を確認しながら、
指定した地点に到達した際に、移動を停止して、敵が自動的に生成されるかを確認します。

 生成のための条件は、RailPathData スクリプト内の IsMissionTrigger 変数にチェックが入ってオンの状態になっており、
かつ、生成したい地点の PathTran ゲームオブジェクトに子オブジェクトとして EventTran ゲームオブジェクトがあることが必要です。
PathTran ゲームオブジェクトには MissionEventDetail スクリプトがアタッチされており、敵のプレファブの情報と、
生成地点として EventTran ゲームオブジェクトの情報のアサインが必要になります。


<確認動画  偲┐寮言と List への追加ー>
動画ファイルへのリンク

 敵が生成された場合には、GameManager ゲームオブジェクトのインスペクターを確認し、敵の情報が enemiesList 変数に登録されているかを確認します。


<GameManager ゲームオブジェクトのインスペクター画像>




生成された敵を倒すことができれば、敵の情報が List から削除されて、規定のクリア条件を満たしていることにより、
次の地点への移動が自動的に再開されます。

<確認動画◆ 偲┐両霾鵑虜鐔と移動の再開ー>
動画ファイルへのリンク


<GameManager ゲームオブジェクトのインスペクター画像>



 どのようにして処理が動いているのかをしっかりと理解しながら、動作の検証を行ってください。



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

 => 次は 手順15 ーライフ表示機能ー です。

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

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

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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