Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity3】uGUIでスコア機能実装!OnTriggerEnter, FindGameObjectWithTag【コインプッシャー4】

Unity5.0.0f4 Personal(2015年5月)

f:id:hiyotama:20150505151000p:plain

 

前回の続きです〜

 

今回は前方にコインが落ちた時、スコアを+3するという機能をつけていきます〜

 

【目標】前方にコインが落ちた時、スコアアップさせる!

 

【課題1】スコアを画面に表示する

まずはスコアを画面に表示させましょう〜Unity4.6から導入されたuGUIという機能を使います〜

Create>UI>Textを選択して下さい〜

 

f:id:hiyotama:20150430190929p:plain

Hierarchy>Create>UI>Text

 

するとCanvasとTextとEventSystemというオブジェクトが出てきますので、まずはCanvasの設定を行います〜

 

Canvasは画面に表示させるGUIの基本的な設定を行います〜今回設定を行うのは、CanvasのInspectorにデフォルトで付いているCanvasScalerです〜

 

f:id:hiyotama:20150430191447p:plain

CanvasScaler

 

こちらのUiScaleModeをScaleWithScreenSizeにして、ReferenceResolutionで縦横の想定解像度を設定します〜これにより、アスペクト比が16:9のデバイスではGUIレイアウトはまずズレないですし、アスペクト比が変わってもある程度調整してくれるようになりました〜

 

続いてTextの編集を行いましょう〜スコアを表示するので名前をScoreに変更し、Score>Inspector>RectTransformにあるAnchorPresetを左上に設定しましょう〜

 

f:id:hiyotama:20150430204757p:plain

AnchorはそのGUIパーツの中心点を表しています〜GUIパーツを回転させるとAnchorを中心にして周りますし、今回でいうと画面サイズやアスペクト比が変わった時も、中心点は画面左上なので、Scoreが左上から大きくズレないようになります〜

 

altを押しながらクリックすることにより、Anchorの位置に合わせて、GUIパーツ(今回でいうところのScoreテキスト)の位置が決定されます〜

 

最終的なRectTransformとText(Script)の設定を載せておきます〜

 

f:id:hiyotama:20150430210337p:plain

Scoreの設定

 

f:id:hiyotama:20150430210448p:plain

Scoreが表示された

 

【課題2】Coinが落ちた時の処理を作成する

コインが落ちた時にしなくてはならない処理は2つあります〜1つはコインを消すこと、もうひとつはコインが前方に落ちた時にスコアを+3することです〜

 

それではまずはコインを消す処理からいきましょう!

 

Create>CreateEmptyよりオブジェクトを作成します〜名前はRemover1として下さい〜

 

f:id:hiyotama:20150430210851p:plain

こいつをコインプッシャーの下のほうに配置します〜サイズはかなり大きめです〜そして、BoxColliderコンポーネントを取り付けIsTriggerにチェックを入れて下さい〜

 

f:id:hiyotama:20150430211414p:plain

 

f:id:hiyotama:20150430211445p:plain

かなり大きめ

 

それではこのRemover1にコインが落ちた時に、コインを消す処理をDestroyScriptに書いていきましょう〜以下ソースです〜

 

 

IsTriggerをOnにしたオブジェクトにぶつかったオブジェクトを削除するだけのscriptです〜

 

次にコインが前方に落ちた時、スコアを+3する処理を作っていきます〜

 

先ほどと同様にRemover2というオブジェクトを作成し、IsTriggerにチェックを入れたBoxColliderを取り付け、コインプッシャーの前方少し下に配置して下さい〜

 

f:id:hiyotama:20150430213843p:plain

Remover2の設定

 

f:id:hiyotama:20150430213912p:plain

こんな感じ

 

それではRemover2にコインが当たった時、Scoreを+3し、コインを削除する、removerScriptを作成しましょう〜以下ソースです〜

 

 

まずはpublic変数であるuScoreに、ScoreTextを設定しましょう〜

 

f:id:hiyotama:20150501174144p:plain

ドラッグ&ドロップ!

 

コインがTriggerに当たった時、コインを消してScoreオブジェクトのSendMessageにより、CountUpメソッドを呼び出しています〜

 

続いてCountScriptというScriptを作成し、Scoreオブジェクトに取り付けます〜以下ソースです〜 

 

 

Startメソッド内で、Scoreオブジェクトを「Score」というTagで探しuScore変数に代入していますので、Scoreオブジェクトにタグを付けましょう!

 

f:id:hiyotama:20150501174650p:plain

Inspector>Tag>AddTag

 

f:id:hiyotama:20150501174804p:plain

プラスボタンでTagを作る 名前はScore

 

f:id:hiyotama:20150501174914p:plain

新しくできた「Score」タグをScoreオブジェクトに取り付ける

 

これでStartメソッド内の処理がうまくいき、ScoreオブジェクトをCountScript内で自由に使うことができるようになりました〜

 

16行目ではremoverScriptから呼び出されたCountUpメソッドによってスコアが+3され、Scoreオブジェクトのテキスト部分を上書きしてます〜

 

注意してほしいのは、Text等のGUIをscript上で扱う時は、「using  UnityEngine.UI;」という記述が必要だということです〜忘れないで下さいね〜

 

さて、これで準備が整いました!

 

f:id:hiyotama:20150501175248p:plain

ゲームスタート

 

f:id:hiyotama:20150430214824p:plain

スコアアップ

 

今回はここまでです〜

ありがとうございました〜

 

【Unity開発3】下準備【コインプッシャー1/6】

【Unity開発3】プッシャーを動かしてコインを落としたい!【コインプッシャー2/6】

【Unity開発3】画面をクリックしてコインを出現させたい!【コインプッシャー:3/6】

【Unity開発3】前方にコインが落ちた時スコアアップしたい!【コインプッシャー4/6】

【Unity開発3】タイトル画面とゲームオーバー画面を作成する(前編)【コインプッシャー:5/6】

【Unity開発3】タイトル画面とゲームオーバー画面を作成する(後編)【コインプッシャー:6/6(Fin)】