i-school - 2Dトップビューアクション 手順10
 障害物用のゲームオブジェクトを作成します。

 実装する処理、および処理の考え方については、1回の学習で難しくても復習しながら進めていってください。



 以下の内容で順番に実装を進めていきます。

手順10 ー障害物の作成ー
17.障害物用のゲームオブジェクトの作成と設定を行う



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

 ・継承元となる親クラスの作成



17.障害物用のゲームオブジェクトの作成と設定を行う

1.設計


 ゲームを制作していくためには、すべての手順を1回の実装で行う必要はありません。
処理の全体図を俯瞰的に管理して、その中に必要となる処理を1つずつ組み込んでいきます。

 今回は最初に障害物用のゲームオブジェクトを作成します。
こちらの準備をおこなった上で、次の手順ではプレイヤーキャラと障害物とが接触したら、障害物を破壊する制御を実装します。

 Console ビューに Debug が表示できたら、処理が正常に動いていることが確認できます。
その上で、この Debug の部分にウインドウを表示する処理を実装していくようにします。

 実装したい処理のゴール地点を設定し、そのゴールにたどり着くにはどのような処理を積み重ねていけばよいかを考えてみてください。
そして処理を逆算していく中で、どんな制御があればいいのか、という設計ロジックを組み立ていきます。


2.障害物用の画像ファイルを用意する


 障害物の1つとして、敵キャラを用意します。
敵キャラは画像ファイルより作成していきます。

 2D Tutorial アセットを利用する場合には、下記のフォルダ内にある画像を利用します。
 それ以外のものを敵キャラとして利用したい場合には、任意の画像ファイルを Unity へインポートしてください。
Textures フォルダ内に格納しておくと管理がしやすくなります。


2D Tutorial アセットを利用する場合の画像のパス
Assets/Art/Sprites/Characters/MrClockworkSheet.png


2D Tutorial アセットを利用する場合のフォルダ画像





 インポートした画像が1つのファイル内に複数まとまっている場合には、以前と同じように
Sprite Editor の機能を利用して、画像ファイルを分割してください。
分割する画像ファイルを選択し、インスペクターの設定のうち、Texture Type を Spriteに、Sprite Mode を Multiple に変更して、
Apply してから Sprite Editor を起動して分割します。


インスペクター画像(分割済)



 この画像の分割に関しては常に同じ処理の流れになりますので、何回かやって覚えてしまいましょう。


3.ヒエラルキーに障害物用のゲームオブジェクトを作成する


 障害物用の画像ファイルより、障害物用のゲームオブジェクトを作成します。
 画像ファイルを1つ、あるいは、同じ方向を向いている画像が複数ある場合にはそれらをまとめて選択してから、ヒエラルキーの上にドラッグアンドドロップしてください。
まとめて選択する方法は Ctrl キーを押しながら左クリックです。
どの方向を向いている画像ファイルでも構いません。今回は正面を向いている画像ファイルを3つ選択しています。


画像ファイルの選択



選択時のインスペクター画像



 ヒエラルキーにドラッグアンドドロップすると、Create New Animation というウインドウが開きます。
2D Tutorial アセットを利用している場合には、すでにアニメーションクリップが用意されていますので保存の必要はありません。
次の【4.障害物用のゲームオブジェクトの設定を行う】に進んでください。



 自分でインポートした画像を利用している場合には、名前をつけてスプライトアニメーションとして作成する必要があります。


Create New Animation ウインドウ



 ファイル名を npc の名称_down.anim に変更して保存を選択してください。
正面以外のアニメの場合には、その方向の名称にしてください。

 保存先には Animations フォルダを指定しています。その中にさらにフォルダ分けをして保存するようにすると管理しやすくなります。
このとき、anim ファイルと一緒に、Animator Controler ファイルも一緒に作成されて保存されます。


保存先フォルダ



4.障害物用のゲームオブジェクトの設定を行う


 ヒエラルキーで障害物用のゲームオブジェクトを選択してインスペクターを確認します。



 ヒエラルキーには、画像ファイルの最初のファイル名と同じ名称のゲームオブジェクトが作成されます。
(複数の画像の場合、自動的に先頭のファイル名を持つゲームオブジェクトになります)

 ヒエラルキーで障害物用のゲームオブジェクトを選択し、名前を画像に見合う名前に変更してください。
Enemy などでも構いません。今回は画像の名称をそのまま利用しています。

 Sprite Renderer コンポーネントの設定を行い、描画の優先順位を設定します。

 Sorting Layer の設定を Chara に、Order in Layer の値を 0 に設定してください。
描画する際に、歩けるタイルよりは優先順位が高く、プレイヤーよりは低くなるようにするためです。


ヒエラルキー画像



障害物用ゲームオブジェクト インスペクター画像



 Transform コンポーネントの Position を Player と重ならない位置に変更してください。
あまり離れすぎるとデバッグが大変になりますので、適宜な位置にしてください。


Sceneビュー と Gameビュー画像




 続いて、インスペクターの一番下にある Add Component ボタンを押して、Capsule Collider 2D コンポーネントを探して追加してください。

 コライダーのサイズは (1, 1) のままでも問題ありませんが、調整していただいて構いません。


インスペクター画像(参考値。この通りである必要はありません)



Sceneビュー画像



 以上で設定は完了です。


5.ObstacleBase スクリプトを作成する


 障害物用ゲームオブジェクトを制御するためのスクリプトを作成し、障害物用ゲームオブジェクトにアタッチします。
このスクリプトは今後も処理の追加を行い、さらにクラスの継承という機能で利用します。


ObstacleBase.cs

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


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


6.障害物用ゲームオブジェクトに ObstacleBase スクリプトをアタッチする


 ヒエラルキーにある障害物用のゲームオブジェクトに対して、ObstacleBase スクリプトをドラッグアンドドロップしてアタッチしてください。
アタッチしたあとには必ず、対象となったゲームオブジェクトのインスペクターを確認して、アタッチされているかを確認してください。


インスペクター画像



 以上で障害物用のゲームオブジェクトは完成です。



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

 次は 手順11 −プレイヤーと障害物の接触時の制御処理− です。