敵がドロップしたアイテムを取得した際の処理【Unity】

今回は、敵がドロップしたアイテムをUnityちゃんが拾った際の処理を実装したいと思います。

スポンサーリンク

敵がドロップしたアイテムを取得した際の処理【Unity】

まずは、プレイヤーの所持コインとなるフィールドをPlayerDataスクリプトに作成します。

以前の記事で作っておいたPlayerDataスクリプトを修正していきましょう。

プレイヤーデータを修正

コインパラメータの初期値は「0」にしておきます。

コイン表示用のUIを作成する

コイン用テキストの作成

Canvas上に新規テキスト「CoinText」を作りました。文字通りUnityちゃんが所持しているコインを表示するためのものですので、配置などはお好みで決めてください。

ItemInformationスクリプトを作成する

ItemInformationスクリプト

これは、各アイテムオブジェクトにアタッチするスクリプトで、Unityちゃんがアイテムに触れた際にそのアイテムが何なのかを識別するためのものですね。

コインオブジェクトのインスペクタ

コインプレハブを例にするとインスペクタはこんな感じですね。Itemnameにコイン用のデータを設定します。コライダーを設定していない場合は設定しておいてください。

また、タグによってアイテムのタイプを区別することも可能なので、その場合は「Coin」や「HPRecovery」等アイテムの種類によって分かりやすい名前を設定すると良いでしょう。

私の場合は、各アイテムパラメータにあるアイテムタイプをチェックして種類を判別するので、こちらの方法ならタグの設定を行う必要はありません。

PlayerStatusスクリプトを修正する

OnTriggerEnterで何かしらのアイテムを取得し、ItemにあるTypeからどの種類のアイテムを拾ったのかをチェックします。

後は、種類によって行うべき処理を実装するだけですね。コインなら所持コインに加算、回復アイテムならlifeに反映させます。現状Unityちゃんの最大HPを100にしているので、HPが100以上となったら強制的に100にします。

アイテム取得後の処理が終わったら対象のアイテムを削除するようにします。

とりあえずアイテムドロップ率100%にして実行してみました。良い感じですね。

2種類以上のアイテムを同時にドロップした際に、アイテム同士が被っているのが若干気になる場合は、アイテム生成時に乱数を使って少しずらすと良いでしょう。