前回、敵キャラクターやダメージ処理を作りました。次はユニティちゃんが集めるアイテム(=コイン)を作ってみましょう。
コインのゲームオブジェクトの作成
今回使うコインのスプライト画像は「Unitychan2D」→「Sprites」フォルダにある「Coin」です。まず、「ユニット毎のピクセル数」がデフォルトだと「16」ですが、これを「32」に変更してください。
次に、このスプライトを展開してみるとアニメーション用に3枚の画像が用意されています。でもアニメーションさせるのが面倒なので、ここでは最初の「coin_0」だけを使うことにします(※やる気のある方はアニメーションさせてみてください)。
「coin_0」を選択したら、ヒエラルキーにドラッグ&ドロップしてゲームオブジェクトを作りましょう。作れたら「タグ」と「レイヤー」をそれぞれ「Coin」に変更しておいてください(※ない場合はプロジェクト設定で新しいタグやレイヤーを追加してください)。
最後にこのゲームオブジェクトに「2Dサークルコライダー」をアタッチして、「トリガーにする」にチェックを入れておきましょう。これでコインのゲームオブジェクトができました。
コインのC#スクリプト
そうしたら、次にコインのC#スクリプトを書きましょう。新しいC#スクリプトを作り、名前を「Coin」に変更したら下記のようにスクリプトを書いてください(※1か所エラーが出ますが、この次のページの作業を行うと直ります)。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Coin : BaseItemObject { [SerializeField] AudioClip getSe = null; bool get = false; SoundManager soundManager; protected override void Start() { base.Start(); soundManager = GameObject.FindGameObjectWithTag("GameController").GetComponent<SoundManager>(); } public override void GetItem() { if (get) { return; } get = true; //取得済みフラグをONにする gameManager.CorrectedCoins++; //集めたコインの数を1つ増やす //SEが設定されていたら音を鳴らす if(getSe != null) { soundManager.PlaySeByName(getSe.name); } DestroyItem(); } void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.CompareTag("Player")) { GetItem(); } } }
これは「くろくま基本アセット」に含まれる「BaseItemObject」を継承したクラスです。やっていることは単純なので解説はいらないと思いますが、簡単に説明すると
- プレイヤーがトリガー内に入ったらGetItemメソッドを呼ぶ。
- GetItemメソッドで音を鳴らしたり、コイン自身を消去したりする。
といったことをやっています。