i-school - 3Dレールガンシューティング 手順7
 2回の手順に分けて、経路移動の機能を実装します。



手順7 ー移動経路の作成と経路の管理機能ー

 最初の手順では、フィールド内に移動の経路となるポイントにゲームオブジェクトを配置し、それを管理させる RailPathData クラスを作成します。
次の手順では、その経路情報を元に移動の処理を行う RailMoveController クラスを作成し、自動的に経路に沿った移動を制御する処理を実装していきます。

 以下の動画は2回分の手順が完成した場合のものです。

<完成動画>
動画ファイルへのリンク


 この処理が問題なく動作するようになったら、さらに別の手順が実装できます。
GameManager クラスを作成して、そちらから RailPathData クラスの情報を受け取って、同じように移動の処理を動作するように処理を追加します。
そうすることにより、その都度ゲーム内で利用する経路の情報を切り替えて、処理を実行出来るようにします。
経路移動については、ここが最終的な目標になります。

 まずは、2回の手順で、経路の情報を活用して、自動的にカメラが移動できるようにしていきます。

<学習内容>
 ・クラス図とクラス間の依存関係(密結合と疎結合)



1.フィールドを自由に作成する


 3Dフィールドを自由に作成してください。
このサンプルプロジェクトでは、次のアセットを利用しています。
UnityAssetStore
Nature Starter Kit 2
https://assetstore.unity.com/packages/3d/environme...


2.移動させたい地点に空のゲームオブジェクトを配置する


 カメラを自動移動させるにあたり、移動用の経路を作成する必要があります。

 ヒエラルキーで右クリックをしてメニューを開き、Create Empty を選択して、空のゲームオブジェクトを作成してください。
名前は RailPathData にします。これを、経路用のゲームオブジェクト群をまとめるためのフォルダ代わりに利用していきます。

 続いて、RailPathData ゲームオブジェクトの上で右クリックをしてメニューを開き、同じように Create Empty を選択します。
名前を PathTran_0 にします。これはスタートする位置とは違う場所に設置してください

 このゲームオブジェクトがカメラの向かう先、つまり、移動の目標の地点の1つになります。カメラの位置を確認しながら、適宜な位置に配置してください。

 あとは、好きな数だけ Create Empty をするか、PathTran ゲームオブジェクトを複製(ctrl + D)して、移動する経路を考えながら、ゲームオブジェクトを配置していってください。


 ヒエラルキーの参考画像です。

<ヒエラルキー画像>


<配置参考(この通りである必要はありません)>




3.クラス図とクラス間の依存関係(密結合と疎結合)


 ここでは2つのクラスを作成します。

 1.RailPathData パスの情報を管理するクラス。Transfrom 型の配列情報としてパス用のゲームオブジェクトを事前にインスペクターからアサインして登録し、メソッドを介して外部に情報を提供する
 2.RailMoveController  パスの情報を元に対象のゲームオブジェクト(カメラ)のレール移動を行うクラス

クラス間の依存関係としては、2.RailMoveController クラス内にある currentRailPathData 変数が、1.RailPathData クラスの情報を参照して利用する設計です。


<クラス図>


 クラスの関係性としては、2.RailMoveController クラスは 1.RailPathData クラスを「知っている」状態ですが、反対側から見ると関係が異なります。
依存関係が強い(お互いを知っている)ほど、クラス内の処理を修正する際などに影響が大きくなります。

 そういった部分も踏まえて設計を行っていくと、管理や修正作業が楽に行えるようになります。


参考サイト
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 様
「密結合」と「疎結合」の違い
https://wa3.i-3-i.info/diff452ketugou.html
Qiita @wm3 様
プログラムの依存関係とモジュール構成のこと
https://qiita.com/wm3/items/2c90bfd9e973d368ebd8


4.RailPathData クラスを作成する


 フィールドに作成した PathTran をゲーム内のデータとして反映できるように RailPathData クラスを作成します。


RailPathData.cs

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



5.RailPathData ゲームオブジェクトに RailPathData クラスをアタッチし、設定を行う


 ヒエラルキーにある RailPathData ゲームオブジェクトに作成した RailPathData クラスをアタッチします。
インスペクター上に2つの配列変数が表示されますので、どちらも PathTran ゲームオブジェクトの数と同じ数の配列を作成します。

 RailMoveDurations 変数は、その地点から次の地点までに移動する際の移動時間です。
各地点ごとに移動にかかる時間を個別に float 型で設定できます。

 PathTrans 変数は経路となるパス用の地点です。ヒエラルキーに作成してある各 PathTran ゲームオブジェクトを順番にアサインしてください。
Element 0 を最初の目的地として移動を行うようになりますので、登録する順番が大切です。


<インスペクター画像>


 以上で設定は完了です。



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

 => 次は 手順8 ー経路の自動移動機能ー です。