前回、敵キャラクターやダメージ処理を作りました。次はユニティちゃんが集めるアイテム(=コイン)を作ってみましょう。
コインのゲームオブジェクトの作成
今回使うコインのスプライト画像は「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メソッドで音を鳴らしたり、コイン自身を消去したりする。
といったことをやっています。
