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

す。 

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

2. インスペクタービューで​コンポーネントの追加→ ​新しいスクリプト を選択 

3. 名前を​ItemScript​に設定し​作成して追加​を選択 

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

​Scriptフォルダーにドラッグ&ドロップ 

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

接触判定の関数は2種類あります。 

 

OnTriggerEnter :物理的な反射を持たないTriggerとの接触判定 

OnCollisionEnter :物理的な反射を持つColliderとの接触判定 

 

プレイヤーとアイテムが接触したときにスルッと抜けて欲しいので OnTriggerEnterを使って実装します。 

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public​​class​​ItemScript​ : MonoBehaviour {

​// トリガーとの接触時に呼ばれるコールバック ​void​​OnTriggerEnter​​(Collider hit) {

} }

   

53

Item の接触判定を Trigger に変更

判定方式をTriggerにしたため、接触判定もTriggerに設定する必要があ ります。 Item (1)のColliderをTriggerに設定します。 

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

2. インスペクタービューの​カプセルコライダー(CapsuleColliderコ ンポーネントの​トリガーにする(Is Triggerにチェックを入れる   

     

54

先ほどの処理で、Item(1)があらゆるTriggerとの接触判定を行うことが できるようになりました。しかし今回、Item(1)と接触判定を持つのは

Playerのみとしたいです。 

いくつかの方法があるのですが、今回はシンプルで汎用的な​タグを確 認する方法を使います。OnTriggerEnterの引数であるhitには、接触対 象の情報が含まれます。この接触対象のタグを調べ、Playerならば特 別な処理を行うようにItemScriptを以下のように修正します。 

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public​​class​​ItemScript​ : MonoBehaviour {

​// トリガーとの接触時に呼ばれるコールバック ​void​​OnTriggerEnter​​(Collider hit) {

// 接触対象はPlayerタグですか?

if (hit.CompareTag ("Player")) { // 何らかの処理

} }

}

 

55

Player にタグを設定する

Playerオブジェクトにタグを設定してみましょう。 

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

2. インスペクタービューの​タグ(Tag​Player​に設定   

 

 

 

56

プレイヤーがアイテムに接触したらアイテムが消えるように設定しま す。消える=シーンからの削除にはDestroyメソッドを使用します。 

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public​​class​​ItemScript​ : MonoBehaviour {

​// トリガーとの接触時に呼ばれるコールバック ​void​​OnTriggerEnter​​(Collider hit) {

​// 接触対象はPlayerタグですか?

​if​ (hit.CompareTag (​"Player"​)) {

// このコンポーネントを持つGameObjectを破棄する Destroy(gameObject);

} } }      

   

57

Prefab の更新

ここまでItem(1)を使って調整してきました。先ほどと同じように、こ

の調整を他のItem(2)~Item(6)にも適用します。 

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

2. インスペクタービューで​オーバーライド(Overridesを選択し、

すべてを適用する(Apply Allを選択   

   

ゲームを再生してみましょう。アイテムに接触するとアイテムが消える ことがわかります。ゲームらしくなってきましたね! 

 

 

58

ヒエラルキービューのItem(1)~Item(6)を整理しましょう。  

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

3. Item(1)Item(6)​をすべて選択し、​Items​へドラッグ&ドロップ   

   

59

「残りのアイテム数」を表示する UI の 作成

UI(ユーザーインターフェース)は、主にゲーム中の画面に表示され る数字や文字を指します。ここでは画面左下に残りのアイテム数を表 示するUIを作成します。 

 

 

 

60

まずはUIを表示するCanvasを用意します。 

1. ヒエラルキービューの​作成​UI​→​キャンバス(Canvasを選択   

   

シーンビューでは巨大なキャンバスオブジェクトが確認できます。UI は他の3Dモデルと違い、ゲーム中の画面の手前に表示されるので、巨 大であることは無視してください。 

61

  キャンバスのサイズを設定します。 

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

2. インスペクタービューで​キャンバススケーラ(CanvasScaler​UI スケールモード(UI Scale Mode)​を​画面サイズに拡大(Scale With  Screen Sizeに設定 

 

 

 

62

UIに表示するテキスト(文字や数字)を設定します。 

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

※作成したテキスト(Text)は自動的にCanvasの子オブジェクトとなり ます。 

 

  現在はデフォルトのNew Textというテキストが表示されています。ま ずは表示位置を左下へ移動し、フォントの大きさを調整します。 

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

2. 短形トランスフォーム(RectTransformの値を以下のように設定   

位置X(PosX):-230 

位置Y(PosY):-230 

位置Z(PosZ):0 

幅(Width):300 

高さ(Height):100   

3. テキスト(Textコンポーネントの​テキスト(Text欄に​0​と記入 し、​フォントサイズ(Font Size​60​に設定 

 

63

   

   

64

次に、シーン内の残りのアイテムの数を、先ほど作成したScoreLabel に通知して表示する仕組みを作成します。 

この機能を実装する方法は無数にありますが、今回は一番簡単な

GameControllerに管理させる方法を使います。アイテム数のような

ゲーム全体の進行に関する機能はGameControllerが持つのが望ましい です。このGameControllerがシーン内のアイテム(Item)の残数を数 え、変更があればScoreLabelに通知するという仕組みです。 

ではGameControllerを作成していきましょう。 

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

3. インスペクタービューでタグを​GameController​に設定   

 

 

 

65

関連したドキュメント