Unityに関連する記事です

 現在は落下しない限り、無制限にゲームが続けられます。
この手順ではゲームクリア用のゴール地点の作成とゲームクリアを判定するゴール地点を追加して、徐々にゲームクリアの状態を作成していきます。


<実装画面 ゴール地点>



手順20 ーゲームクリア処理の実装ー
35.ゲームクリア用のゴール地点を作成する
36.スクリプトを作成し、ゴール地点に侵入した際にゲームクリアを判定する処理を追加する



35.ゲームクリア用のゴール地点を作成する

設計


 ゴール地点用のゲーオブジェクトを作成します。ゴール地点には家の画像を利用して、着地できるように床もセットで用意します。
床の部分はすでに作成してあるプレファブを利用して作成していきます。(コライダーなどがあるゲームオブジェクトを利用するので再作成の手間が省けます)


画像ファイルから house ゲームオブジェクトを作成する


 ゴール用に使用する画像を選択し、選択したファイルをそのままヒエラルキーにドラッグアンドドロップします。


ファイルの場所 ファイルの場所 Assets/Sunnyland/artwork/Environment/props/house.png



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



 ヒエラルキーに house ゲームオブジェクトが作成されます。


ヒエラルキー画像



Sceneビュー画像



Gameビュー画像



house ゲームオブジェクトの名前を GoalHouse に変更する


 house ゲームオブジェクトを選択し、名前を GoalHouse に変更します。


ヒエラルキー画像



インスペクター画像



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


 GoalHouse ゲームオブジェクトを選択して設定を行います。

 Transform コンポーネントの Scale の値を (3, 3, 3) に変更してください。画像が大きくなります。
位置については後程設定しますので、Position の値は (0, 0, 0)のままにしておいてください。(違っていれば変更してください)

 SpriteRenderer コンポーネントの Order In Layer の値を 0 から 1 に変更してください。
空中床や敵などのゲームオブジェクトよりも表示の優先順位を高くし、バルーンやキャラよりも優先順位を低くする設定になります。


インスペクター画像



SceneビューとGameビュー画像


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

 追加した BoxCollider2D コンポーネントの IsTrigger にチェックを入れます。

 Edit Collider ボタンを押して、Sceneビューを利用して、コライダーの大きさを調整します。
家の正面付近に設置してください。この部分を通過すると、ゲームクリアの判定を行うようにします。


インスペクター画像



Sceneビュー画像



 以上で GoalHouse ゲームオブジェクトの設定は完了です。続けて、床部分を設置していきます。


GoalHouse ゲームオブジェクトの子オブジェクトとして、Ground_Set ゲームオブジェクトを作成する


 GoalHouse ゲームオブジェクトには床部分がありませんので、Prefabs フォルダにある AerialFloor_Mid ゲームオブジェクトを利用して床を作成します。

 Prefabs フォルダ内の AerialFloor_Mid ゲームオブジェクトを選択して、GoalHouse ゲームオブジェクトにドラッグアンドドロップしてください。
子オブジェクトとして、AerialFloor_Mid ゲームオブジェクトが追加されます。


<手順動画 プレファブ・ゲームオブジェクトをドラッグアンドドロップする>
https://gyazo.com/4a1ae33773cd31c433fa256f6c907397


ヒエラルキー画像



 名前を Ground_Set に変更してください。


ヒエラルキー画像



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

1.大きさを調整する

 まず最初に、そのままでは大きさが合わないため、大きさを調整します。

 Ground_Set ゲームオブジェクトの Transform コンポーネントの Scale を (0.3, 0.3, 0.3)に変更します。
また MoveObject スクリプトは不要ですので、Remove Component を行って削除してください。


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



SceneビューとGameビュー画像



2.位置を調整する

 つづいて位置を変更します。家に対して床となるように設置します。このあと、床部分のブロックを3つ増やします。
インスペクター画像も参考してください。


インスペクター画像



Sceneビュー画像



3.床を複製して並べる

 Ground_Set ゲームオブジェクトの子オブジェクトである Nature_props_15 ゲームオブジェクトを選択して複製します。3つ複製を作成してください。
下記のヒエラルキー画像のようになります。プレファブのゲームオブジェクトに新しいゲームオブジェクトが追加されると、追加された分はアイコンにプラス表示が付きます。


ヒエラルキー画像



 すべて Nature_props_15 ゲームオブジェクトの位置に複製されていますので、位置をずらして横にならべてください。


SceneビューとGameビュー画像



 参考用に複製したゲームオブジェクトのインスペクター画像です。位置情報以外は同じです。


Nature_props_15 (4) ゲームオブジェクト インスペクター画像



Nature_props_15 (5) ゲームオブジェクト インスペクター画像



Nature_props_15 (6) ゲームオブジェクト インスペクター画像



4.プレファブをアンパックして通常のゲームオブジェクトにする

 Ground_Set ゲームオブジェクトを選択して右クリックをしてメニューを表示し、Prefab => Unpack Completely を選択してください。
Ground_Set ゲームオブジェクトとすべての子オブジェクトが、プレファブではなく、通常のゲームオブジェクトになります。


<手順動画 プレファブをアンパックする>
https://gyazo.com/06693d91d19cb0ef804d8333fcb03971


 以上で Ground_Set ゲームオブジェクトの作成は終了です。


GoalHouse ゲームオブジェクトの位置を調整して、生成する地点を設定する


 ゴール地点が完成しましたので、最後に、このゲームオブジェクトを生成する場所を設定します。
X 軸は画面の右端に、Y 軸は スタート地点を同じ高さに設定します。下記のインスペクター画像とSceneビュー画像を参考に設定してください。


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



GoalHouse ゲームオブジェクト SceneビューとGameビュー画像(ゲーム画面には映らない位置)



 以上でゴール用のゲームオブジェクトの作成は終了です。


36.スクリプトを作成し、ゴール地点に侵入した際にゲームクリアを判定する処理を追加する

設計


 ゴール地点用のゲームオブジェクトを作成しましたので、このゲームオブジェクトに新しく作成する GoalChecker スクリプトをアタッチして
キャラとゴール地点との接触判定を行えるようにします。キャラと直接ぶつかるのではなく、ゴール地点へ侵入した際に接触判定を行いたいため、
OnTriggerEnter2D メソッドを利用して処理を実装します。この処理の中でクリアの処理を実装するロジックとします。

 なお、最初に1回だけ接触した時に接触判定を行い、以降はキャラが侵入しても接触判定を行わないように制御します。
何故なら侵入するたびに何回もクリアの判定が行われてしまうのを防ぐためです。


GoalChecker スクリプトを作成する


 宣言フィールドでは3つの変数を宣言します。

 moveSpeed 変数は、ゴール地点が動く速度です。基本的には空中床などのゲームオブジェクトと同じ速度に設定します。

 stopPos 変数は、移動しているゴール地点を停止させる位置の設定です。この地点まで来たら移動を行わないように制御することで、画面の右端にゴール地点が留まるようにします。

 isGoal 変数は、ゴール地点のゲームオブジェクトに設定したコライダーとキャラのコライダーが接触したかどうかの判定に用いる制御用の変数です。
この値が false の間はキャラはゴール地点のコライダーと接触していない状態を表します。OnTriggerEnter2D メソッドの中ではこの値を元に接触判定を行っています。
最初にキャラがコライダーと接触した際に、値が true になります。true 以後は、コライダーの接触判定を行わないように制御しています。
そのため1回だけゴールをしてクリアしたと判定されるようになります。


GoalChecker.cs

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



GoalHouse ゲームオブジェクトに GoalChecker スクリプトをアタッチする


 ヒエラルキーにある GoalHouse ゲームオブジェクトを選択します。

 作成した GoalChecker スクリプトをドラッグアンドドロップしてアタッチします。public 修飾子の変数に初期値が入っていることを確認してください。


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



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


 ゲームを実行して、以下の動作を確認してください。


<実行検証動画 GoalHouse ゲームオブジェクトが移動する>
https://gyazo.com/be2564420407addd2890557e39bda9d8


<実行検証動画◆GoalChecker スクリプトで指定した停止位置まで移動したら移動を停止する>
https://gyazo.com/9328aa62b9b73d4067a73918633172e3


<実行検証動画 GoalHouse ゲームオブジェクトの正面付近のコライダーに侵入したら Console に1回だけゲームクリアと表示される>
https://gyazo.com/7860f99ee3be14a5843ca786918e8108


GoalHouse ゲームオブジェクトをプレファブにする


 GoalHouse ゲームオブジェクトをプレファブにします。ヒエラルキーから GoalHouse ゲームオブジェクトを選択して
Prefabs フォルダにドラッグアンドドロップしてください。プレファブになったらヒエラルキーの GoalHouse ゲームオブジェクトは不要ですので、削除してください。


<手順動画 プレファブにする>
https://gyazo.com/d5dc0fc18691f4d1c82668b8f8884c57


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

 次は 手順21 ーリザルト表示の実装ー です。

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

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

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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