アイテム(コイン)の作り方

前回、敵キャラクターやダメージ処理を作りました。次はユニティちゃんが集めるアイテム(=コイン)を作ってみましょう。

スポンサーリンク

コインのゲームオブジェクトの作成

今回使うコインのスプライト画像は「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」を継承したクラスです。やっていることは単純なので解説はいらないと思いますが、簡単に説明すると

  1. プレイヤーがトリガー内に入ったらGetItemメソッドを呼ぶ。
  2. GetItemメソッドで音を鳴らしたり、コイン自身を消去したりする。

といったことをやっています。


次のページ→クリア&ゲームオーバー処理の作り方(1):GameManager等の変更