• 検索結果がありません。

作成したItemタグをItem(1)~Item(6)に設定しましょう。先ほどの作

業で一覧にItemタグが追加されています。 

1. ヒエラルキービューで​Item(1)​を選択 

2. インスペクタービューで​タグ​を​Item​に設定  3. オーバーライド→​すべてを適用するを選択 

 

  オーバーライド→すべてを適用するを行うことで、同じPrefabである Item(2)~Item(6)すべてに設定が適用されます。 

   

67

Item をカウントする機能を追加

GameControllerにItemのタグを持つオブジェクトをカウントする機能

を追加します。GameControllerオブジェクトにGameControllerコン ポーネントを作成して追加しましょう。 

1. ヒエラルキービューで​GameController​を選択 

2. インスペクタービューで​コンポーネントを追加を選択 

3. 新しいスクリプト​を選択し、名前を​GameController​にして​作成して 追加を選択 

4. プロジェクトブラウザの​Assetsフォルダー内に作成された GameController​を​Scriptフォルダー​に移動 

5. GameController​をダブルクリックして開く 

 

GameControllerに以下のようにコードを記述します。 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public​​class​​GameController​ : MonoBehaviour {

​public​​void​​Update​​() {

​int​ count = GameObject.FindGameObjectsWithTag (​"Item"​).Length;

} }

68

残りのアイテム数を、UIのScoreLabelに表示するようにします。 

まずはGameControllerからTextコンポーネントへアクセスする方法と

して、Textコンポーネントへの参照を設定する方法を利用します。 

まずは参照に使用するコードを作成します。 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public​​class​​GameController​ : MonoBehaviour {

​public UnityEngine.UI.Text scoreLabel;

​public​​void​​Update​​() {

​int​ count = GameObject.FindGameObjectsWithTag (​"Item"​).Length;

} }

 

69

次に取得したItem数をtextに代入します。 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public​​class​​GameController​ : MonoBehaviour {

​public​ UnityEngine.UI.Text scoreLabel;

​public​​void​​Update​​() {

​int​ count = GameObject.FindGameObjectsWithTag (​"Item"​).Length;

​scoreLabel.text = count.ToString ();

}

}

 

70

作成したGameControllerとScoreLabelを紐付けます。 

1. ヒエラルキービューで​GameController​を選択 

2. ScoreLabel​​ScoreLabelの欄へドラッグ&ドロップ   

  ゲームを再生してみてください。画面左下に残りのアイテム数が表示 され、プレイヤーがアイテムを取得する度にアイテム数が減ることが わかりますね! 

71

 

クリア時の UI を作成

次は、アイテム数と同じUIテキストの機能を使ってクリア時(アイテ ムをすべて取った時)の表示を作成します。 

1. ヒエラルキービューの​作成​UI​→​テキストを選択  2. 名前を​WinnerLabel​に変更 

 

 

72

続いてWinnerLabelの内容を設定します。 

1. ヒエラルキービューで​WinnerLabel​を選択 

2. インスペクタービューで​短形トランスフォームを以下の値に設定   

● 位置X:0 

● 位置Y:0 

● 位置Z:0 

● 幅:300 

● 高さ:100   

3. テキスト欄に​YOU WIN​と入力  4. フォントサイズを60に設定 

 

 

73

クリア条件の設定

続いてGameControllerに少し手を加えてクリア条件を設定します。 

今回のゲームではアイテムを全て回収する=残りのアイテムが0にな ることが勝利条件です。シーン内にItemタグを持つオブジェクトが見 つからなかったら(全てなくなったら)勝利とします。 

1. プロジェクトブラウザでGameControllerをダブルクリックして開 く 

2. コードを以下のように修正   

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public​​class​​GameController​ : MonoBehaviour {

​public​ UnityEngine.UI.Text scoreLabel;

​public​​void​​Update​​() {

​int​ count = GameObject.FindGameObjectsWithTag (​"Item"​).Length;

scoreLabel.text = count.ToString ();

if (count == 0) { // クリア時の処理 }

} }

   

74

参照を設定

最後にクリア時に初めて「YOU WIN」の文字が表示されるようにしま す。今回もWinner Labelへの参照が必要ですが、今までと同様にエ ディター側で設定します。 

 

GameControllerを以下のように修正します。 

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public​​class​​GameController​ : MonoBehaviour {

​public​ UnityEngine.UI.Text scoreLabel;

​ public GameObject winnerLabelObject;

​public​​void​​Update​​() {

​int​ count = GameObject.FindGameObjectsWithTag (​"Item"​).Length;

scoreLabel.text = count.ToString ();

​if​ (count == ​0​) { ​// クリア時の処理 }

} }

 

GameControllerからWinnerLabelへの参照を設定します。 

1. ヒエラルキービューで​GameController​を選択 

2. ヒエラルキービューの​WinnerLabel​をインスペクタービューの GameController​コンポーネントの​Winner Label Object​へドラッグ&

ドロップ 

75

  ここでゲームを再生してみましょう。YOU WINの表示が最初から出て しまっていますね。 

 

76

クリア条件を満たすまで、YOU WINを非表示にします。 

Unityで描画されているものを非表示にする方法はいくつかあります

が、今回はオブジェクトを非アクティブにする事で非表示にします。 

1. ヒエラルキービューで​WinnerLabel​を選択 

2. インスペクタービューでオブジェクトのチェックを外す   

  これでシーンビューやゲームビューからもYOU WINの表示が消えまし た。 

   

77

クリア時に「 YOU WIN 」と表示する

クリア時に非アクティブの「Winner Label」をアクティブにすること で、ゲームクリア時にYOU WINと表示します。 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public​​class​​GameController​ : MonoBehaviour {

​public​ UnityEngine.UI.Text scoreLabel;

​public​ GameObject winnerLabelObject;

​public​​void​​Update​​() {

​int​ count = GameObject.FindGameObjectsWithTag (​"Item"​).Length;

scoreLabel.text = count.ToString ();

​if​ (count == ​0​) {

// オブジェクトをアクティブにする

winnerLabelObject.SetActive (true);

} } }

   

78

ゲームを再生してみましょう。プレイヤーがすべてのアイテムを取 り、アイテム数が0になるとYOU WINの文字が表示されるようになり ましたね! 

  しかし、これだけではただアイテムを集めるだけの作業になってし まっていて面白みに欠けます。最後の仕上げとして、接触してはいけ ない障害物を作成しましょう。完成まであとひと息です! 

   

79

障害物の作成

まずは障害物の3Dモデルを作成します。 

DangerWall プレハブの作成

1. ヒエラルキービューの​作成​→​3Dオブジェクト​→​キューブ​を選択  2. 名前を​DangerWall​に変更 

3. ヒエラルキービューの​DangerWall​をプロジェクトブラウザの​Prefab フォルダー​にドラッグ&ドロップして​PrefabのDangerWall​を作成   

 

 

 

80

DangerWallは接触してはいけない危険な壁です。より危険度が高く見 えるよう「光る壁」としてマテリアルを設定します。 

1. プロジェクトブラウザで​作成→​マテリアルを選択  2. 名前を​DangerWallMaterial​に変更 

3. DangerWallMaterial​​Materialフォルダーに移動  4. インスペクタービューで以下を設定 

 

● アルベド(Albedo):赤や黄色など危険色(地面や壁とは別の色 にする) 

● 放出(Emission):チェックを入れ、色をアルベドと同様の色を 設定。強度(Intensity)を1.3に設定 

 

   

81

           

5. DangerWallMaterialをヒエラルキービューの​DangerWall​(またはシー ンビューの​DangerWallオブジェクト​)へドラッグ&ドロップ 

 

  6. ヒエラルキービューの​DangerWall​を選択し、インスペクタービュー

の​オーバーライド​→​すべてを適用する​を選択 

82

 

 

83

DangerWall の配置

DangerWallのサイズと位置を調整しましょう。 

1. ヒエラルキービューの​DangerWall​を選択 

2. インスペクタービューの​トランスフォームコンポーネントを以下 のように設定 

 

● 位置(Position) :X:4 Y:0.5 Z:3 

● 回転(Rotation) :X:0 Y:0 Z:0 

● 拡大/縮小(Scale) :X:10 Y:1 Z:1 

 

  このとき、調整したDangerWallがItemと重なってしまうとクリアでき なくなります。もし重なる場合はItemの位置を少しずらしましょう。 

 

84

DangerWallを複製し、位置・回転・拡大/縮小の数値を調整してステー ジ内に配置してみましょう。この部分は好きなように複製、配置して 構いません。ここでは例として以下のように設定してみます。 

1. ヒエラルキービューの​DangerWall​を選択し、右クリックして​複製 を選択 

2. さらにもう一度​複製を選択し、DangerWallオブジェクトを合計3個 にする 

3. DangerWallオブジェクトの名前を​DangerWall 1​​DangerWall 2​DangerWall 3​に変更 

4. それぞれの​位置​・​回転​・​拡大/縮小​の数値を調整   

DangerWall 1 

* position (x:4, y:0.5, z:3) rotation (x:0, y:0, z:0) scale(x:10, y:1, z:1)  DangerWall 2 

* position (x:4, y:0.5, z:-4) rotation (x:0, y:0, z:0) scale(x:10, y:1, z:1)  DangerWall 3 

* position (x:-5, y:0.5, z:4) rotation (x:0, y:90, z:0) scale(x:10, y:1, z:1)   

ゲームを再生して、DangerWallとItemが重なっていないことを確認し ましょう。この時点ではDangerWallはただの壁で、接触しても何も起 こりません。 

 

   

 

85

     

DangerWall の整理

DangerWallオブジェクトが増えてきましたね。Item同様、空のゲーム

オブジェクトを作って整理しましょう。 

1. ヒエラルキービューの​作成→​空のオブジェクトを作成を選択  2. 名前を​DangerWalls​に変更 

3. DangerWallオブジェクトを全て​DangerWalls​へドラッグ&ドロップ   

   

DangerWallStage の静的( static ) 化

 

先ほどマテリアルで設定した​放出(Emissionによる発光エフェクト は、発光する側のオブジェクトと光を受けるオブジェクトの両方を​静

的(staticに設定することで効果を発揮します。 

関連したドキュメント