前回は、ボタンをクリックすることで、メダルを量産出来る部分まで作りました。
このままでは、無限に量産され続けるので、まずは落下したメダルの処理について対処したいと思います。といってもメダルオブジェクトを削除するだけでOKなんですけどね。
また、メダルの枚数を管理するマネージャースクリプトを作ります。
メダルの枚数を管理し落下したメダルオブジェクトを削除する
ただ落ちたメダルを削除するだけでは面白くないので、ゲーム開始時に一定量の所持メダルを用意して、手前に落下したメダルは獲得メダルとしてストックし、左右に落下したメダルはそのまま削除するようにします。
本物のメダルプッシャーと同じような仕様ですね。
手前に落下したメダルも、カメラに映ることはありませんので、オブジェクト自体は削除して問題なさそうですね。
メダルオブジェクトを削除するスクリプトを作成する
新規スクリプト「MedalDestroy」を作成します。
OnTriggerEnterを使って、メダルが落下したらこの後作成するmedalManagerスクリプトのGetMedalメソッドを使いメダルを獲得するようにします。
現時点では該当スクリプトが存在せず、エラーになりますがこのまま作業を進めます。
メダルプレハブに「Medal」というタグを設定しておきましょう。
サイド用と手前用のコライダを作成する
MedalDestroyスクリプトをアタッチするために、空のオブジェクトを2つ作成します。
1つは「SideOut」、もう1つは「GetMedals」にしました。
SideOutは、その名の通り横に流れ落ちたメダルを検知するためのコライダになります。
画像だと分かりやすいと思いますが、BoxColliderをアタッチしてサイドに収まるように配置します。
GetMedalsにもBoxColliderをアタッチして、手前に来るように配置しましょう。
それぞれのオブジェクトに対して先ほどのMedalDestroyスクリプトをアタッチします。
publicで宣言したgetcoinですが、SideOutは「0」に、GetMedalsには「1」を設定しておきます。このようにすることで、スクリプトを複数作らなくて済みます。
メダルの枚数を管理するスクリプトを作成する
新規スクリプト「MedalManager」を作成します。
ゲーム開始時の持っているメダルの枚数を100枚にしています。
メダルを取得した時の処理と、消費したときの処理を記述しています。
また、画面の左上に現在持っているメダルの枚数状況をラベルを使って表示するようにしました。
保存したら、空のオブジェクトを作ってアタッチしておきます。
また、MedalManagerスクリプトを先ほど作成した「SideOut」「GetMedals」にアウトレット接続しておきましょう。
ボタンをクリックしたらメダルを消費するようにShootスクリプトを修正
各ボタンがクリックされた際にLostMedalメソッドにアクセスするように修正します。
それぞれのボタンにMedalManagerスクリプトをアウトレット接続します。
ゲームを実行して、メダルが減っているか、落下したら削除されているか確認しましょう。
次回は、メダルが0枚になった際にどうするかについて考えましょう。