i-school - 3Dレールガンシューティング 発展8
 ゲームクリア時に、カメラの位置とアングルを調整して、例えば、プレイヤー自身を映す演出が行える機能を実装します。
下記の実装動画では、カメラを直進後、後ろに180度振り向かせてプレイヤーを映すような挙動になっています。(プレイヤー用のゲームオブジェクトはないため、カメラのみ制御です。)


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



発展8 ーゲームクリア時のカメラ移動・回転演出機能ー

設計


 レールガンシューティングでは一人称視点(First Person Perspective)にてゲームが進行します。
そのため、ゲーム画面に映るプレイヤーの情報は手に持っている武器だけです。

 ゲームクリアのタイミングで、カメラを移動させて、プレイヤーをゲーム内に映す演出を考えていきます。
機能としてはカメラの移動と回転を行う機能になるため、他の演出にも利用できます。


CameraController スクリプトを作成する


 武器のゲームオブジェクトにアタッチし、その武器に、武器の番号を付与するためのスクリプトを作成します。
この武器の番号と、WeaponDataSO スクリプタブル・オブジェクトに登録されている武器の情報内の武器の番号とを照合して利用します。


CameraController.cs

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


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


CameraController ゲームオブジェクトを作成し、CameraController スクリプトをアタッチして設定を行う


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

 インスペクターを確認し、表示されている変数に必要な情報をアサインします。


インスペクター画像



 以上でこの設定は完了です。


WeaponChanger スクリプトを修正する


 すべての武器を非表示にする機能を追加します。

 ここでは新しいメソッドを作成していますが、既存の SwitchWeaponModel メソッドに引数を設定して対応することも出来ます。
どういった処理に変更すればいいかを考えて修正してみてください。


WeaponChanger.cs

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


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


PlayerController スクリプトを修正する


 演出時のカメラの移動地点をプレイヤーからみて常に前方に対して移動させるようにしたいのですが、
このゲームは一人称視点であるため、カメラ = プレイヤーの図式になって動いています。

 そのため、新しくプレイヤー用のゲームオブジェクトをカメラの子オブジェクトとして作成し、
新しく変数を用意して、事前に登録しておくようにします。

 ゲームクリアのタイミングで親子関係を解消する処理を追加することで、その時点でカメラ = プレイヤーの図式はなくなり、
カメラが単体で移動するようになります。

 またゲームクリアに合わせて弾を発射できないようにするための変数も用意しています。


PlayerController.cs

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



PlayerController スクリプトのアタッチされているゲームオブジェクトの設定を行う


 最初に、プレイヤーの位置情報として利用するための、空のゲームオブジェクトを作成して、プレイヤーの子オブジェクトとして配置します。
今回は Target という名称にしています。Transfrom の Position の値は任意です。すべて (0, 0, 0) でも構いません。

 もしも3Dモデルを利用する場合には、この部分に利用してください。


ヒエラルキー画像



インスペクター画像




 続いて、PlayerControlller スクリプトのインスペクターを確認し、Target 変数に、作成した Target ゲームオブジェクトをドラッグアンドドロップしてアサインします。


インスペクター画像



 以上でこの手順は完成です。


GameManager スクリプトを修正する


 事前に準備した CameraControlller、PlayerControlller、WeaponChanger の各スクリプトへの制御命令を追加します。

 今回はクリア時の演出でカメラを動かしたいため、ゲームクリアのタイミングでこれらの処理を実行しています。
今後の実装においては、自分の考えた演出のタイミングで実行するように考えてください。


GameManager.cs

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


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


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


 新しく追加した CameraController 変数に、CameraController ゲームオブジェクトをドラッグアンドドロップしてアサインします。
自動的に CameraController スクリプトの情報が登録されます。


インスペクター画像



 以上で設定は完了です。


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


 すべての処理が完成しましたので、まずは処理の見直しを行ってください。
ゲームを実行したら、どのような処理が動けばよいのか、正しい制御内容をイメージした上で、ゲームを実行してデバッグを行ってください。

 今回の場合、移動経路がなくなった際に、カメラが演出用の移動と回転を行う機能になっています。


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




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

 => 次は 発展9 ームービー再生機能の準備ー です。