前書き
今回はTopDown Engineで敵キャラを倒したときにアイテムをドロップさせる方法になります。
TopDown EngineではLootというスクリプトを使うことで簡単にアイテムをドロップさせる機能が実装できるため、Lootコンポーネント(以下、Loot)の使い方について紹介していこうと思います。
Lootコンポーネントを付与することで敵を倒したときにアイテムを落とすようになります。
Lootの設定方法
Helathコンポーネントが設定されているオブジェクトと同じ階層にLootを設定してあげるだけでLootの設定は完了です。Lootを設定させることで敵を倒したときやダメージを与えた時にアイテムをドロップするようになります。
Lootの作り
TopDown Engineの2DゲームDemoの中にLootを使用しているPrefabが見つかりませんでした。なので、今回は自分が作成したゲームの中で登場する敵キャラを参考に説明していきたいと思います。
# 3DゲームDemoのほうにはLootスクリプトを設定したものがありましたが、2DゲームDemoには見つかりませんでした。もしかしたらあるかもしれませんが….
Lootのインスペクターは以下になります。
Lootのパラメータを見てみると分かりますが、パラメータに
- SpawnLootOnDeath
- SpawnLootOnDamage
が存在します。いずれもhealthコンポーネントが必要になるため、Lootを使用する場合はhealthコンポーネントが付与されているオブジェクトにLootを付与すると期待通りの動きをすると思います。
# 敵を倒したときにアイテムをドロップさせることが目的なので、healthがない敵キャラはいないと思います。
基本的には上記パラメータ「SpawnLootOnDeath」や「SpawnLootOnDamage」を設定して、「敵を倒したときにアイテムを落とす」または「敵にダメージを与えた時にアイテムを落とす」ことが主の使い方になります。
また、LootModeを指定してドロップするアイテムを設定することができます。直接オブジェクトを指定する方法やMMLootTableGameObjectSOという独自のスクリプトで設定することも可能です。
Lootのパラメータについて
Lootで使用する主要なパラメータについて説明していきます。
LootMode
ドロップするアイテムを設定します。LootModeには3つのモードがあります。
unique
単一のGameObjectを指定することができます。ドロップするアイテムは指定したGameObject1つだけです。
LootTable
ObjectsToLootクラスを用いて複数のGameObjectを設定することができます。合わせてWeightを設定することでアイテムの出現率も設定することができます。
LootTableScriptableObject
MMLootTableGameObjectSOという独自のスクリプトを設定することができます。MMLootTableGameObjectSOの中身はLootTableで設定したように複数のGameObjectが設定でき、Weightも設定することができます。
3つのパターンを紹介しましたが、簡単に使い方を分けると以下のようになるかなと思います
- unique:
単一のアイテムを落としたい場合などに設定する。重要アイテムやキーアイテムを落とすときに設定してあげるとよさそう。 - LootTable:
雑魚敵などで複数のアイテムをドロップさせたい場合に設定するとよさそう。 - LootTableScriptableObject:
雑魚敵などで「同じようにアイテムを落としたい」場合に設定するとよさそう。
ボスや重要アイテムを落とす敵キャラにはuniqueで設定し、いろいろなアイテムを落とさせたい雑魚敵などはLootTable、LootTableScriptableObjectに設定するといった形で使い分けをしていただくとよいかなと思います。
Conditions
上記で説明をしましたが、アイテムをドロップする条件を指定することができます。
SpawnLootOnDeath
敵を倒したときにアイテムをドロップするようになります。通常はこちらのフラグを有効にするかなと思います。
SpawnLootOnDamage
敵にダメージを与えた時にアイテムをドロップするようになります。叩くとコインが落ちてくるような敵を作るときに有効になるのかなと思います。
Pooling
ドロップするアイテムをPoolingするかどうかも指定することができます。
MutualizedPoolName
Poolingするときのアイテムを他の敵キャラと共有することができます。例えば敵Aと敵Bで同じアイテムをドロップさせる場合はこの項目を一致させることでPooling処理が働き最適化が行えるため処理が軽くなります。
Spawn
アイテムのドロップ方法について設定することができます。
Quantity
アイテムのドロップする量を指定できます。
SpawnProperties
省略していますが、アイテムがドロップする位置やアイテムの大きさを変更することができます。
LimitedLootQuantity
アイテムのドロップ数に制限をかけることができます。このフラグがTrueの場合はMaximumQuantityの数だけアイテムがドロップするとそれ以降アイテムがドロップしません。このフラグがFalseの場合、無制限にアイテムをドロップし続けます。
MaximumQuantityとRemainingQuantity
最大ドロップ数とその残りになります。LimitedLootQuantityがTrueの場合は、アイテムをドロップするたびにRemainingQuantityが減っていき、RemainingQuantityが0になったところでアイテムがドロップしなくなります。
CollisionsとFeedback
Avoid Obstacles
壁などの障害物を避けてアイテムをドロップさせることが可能になります。
Loot Feedback
アイテムをドロップした時にFeedbackを実行することができます。
まとめ
今回はTopDown EngineのLootの作りについて紹介しました。
基本的にはHealthコンポーネントが設定されているオブジェクトにLootを設定してあげるだけでアイテムがドロップする簡単な設定方法になっています。いろいろとパラメータについても説明しましたが、とりあえず動かしてパラメータを変えてみて状況にあった設定を見つけていただければいいかなと思います。
コメント