TopDownEngine 銃取得で自動的に装備&弾数∞の設定

前回は、Unity の見下ろし型ゲームの作成支援アセット「TopDown Engine」の公式レシピに従って作成した銃で指定した方向に射撃するコンポーネントの追加と、オートリロードの設定について紹介しました。

前回の記事:TopDownEngine 弾数設定・リロードできる銃の作成2/2 | Compota-Soft-Press

TopDownEngine ProjectileWeapon AutoReload により空のときに射撃しようとするとリロードが行われました。SS1

今回は T キーを押さなくても武器アイコン (ItemPicker) に触れたらその武器を自動的に装備する設定と、指定回数でリロードは発生するけれど弾薬は無制限にする方法について紹介します。
※ Unity のバージョン 2021.3.25f1、 TopDown Engine のバージョンは 3.2 です。

武器取得時に自動的に装備する設定

ゲームのマップに配置されている武器アイコン (ItemPicker) を取得した後、現状は T キーで装備・リロードする必要があります。
自動的に装備させるには TestWeapon (InventoryWeapon) の InventoryWeapon コンポーネントの AutoEquipMode プロパティを既定値の NoEquipMode から EquipMode に切り替えます。

TopDownEngine TestWeapon(InventoryWeapon) の Auto Equip Mode を Auto Equip に変更します.

これで弾薬・武器を取得すると同時に装備・リロードが行われます。

TopDownEngine InventoryWeapon AutoEquipMode を Auto Equip に設定すると武器取得時に自動的に装備します。Edited SS1

弾薬を無制限にする

公式サイトに弾薬ベースの武器には、インベントリベースと通常の2種類があり、通常の弾薬ベースの武器では弾薬が無限に消費されると書いてあります。
また、どちらの種類でもマガジンのサイズやリロードの設定を定義できると書いてあります。

Thanks to the InventoryEngine, the engine natively supports ammo and the possibility to create ammo based weapons. There are two types of ammo based weapons you can create : inventory based, and regular ones.

Inventory based weapons will require your character to have an Inventory attached to it (via the CharacterInventory ability), while regular ammo based weapons will just consume infinite ammo, but both will allow you to define a magazine size, reload or not, etc.
(Google 翻訳)

InventoryEngine のおかげで、エンジンは弾薬と弾薬ベースの武器を作成する可能性をネイティブにサポートしています。作成できる弾薬ベースの武器には、インベントリ ベースと通常の 2 種類があります。

インベントリベースの武器では、(CharacterInventory アビリティを介して) キャラクターにインベントリがアタッチされている必要がありますが、通常の弾薬ベースの武器では弾薬が無限に消費されるだけですが、両方ともマガジンのサイズ、リロードの有無などを定義できます。
Weapons | TopDown Engine Documentation – https://topdown-engine-docs.moremountains.com/weapons.html#ammo

問題は、通常の弾薬ベースが何を指しているかです。
この直後に出てくる公式レシピで作った TestWeapon は InventoryWeapon であり、弾薬も Inventory のそれを消費するので、おそらくインベントリベースの武器でしょう。
そのため、弾薬を無制限にするには、TestWeapon をインベントリベースから通常ベースへ変化させる必要があります。

引用した公式サイトの記述の続きを読むと、Magazine Based を ON にすることで弾薬をインベントリから取得するようになり、WeaponAmmo コンポーネントも必要になると書いてあります。

Checking the “Magazine based” checkbox will tell the weapon that it should take its ammo from the character’s inventory. To do so, you’ll also need another component on your weapon, WeaponAmmo. There you’ll be able to specify the name of the ammo the system should look for in the inventory (“Bullets” for example), what the inventory’s name is (usually MainInventory but you can pick any name you prefer as long as it’s set that way on your inventory), the maximum ammo the weapon’s ammo indicator should go for, and whether or not the weapon should load itself with ammo from the inventory when equipped.
(Google 翻訳)

「マガジンベース」チェックボックスをチェックすると、キャラクターのインベントリから弾薬を取得するように武器に指示されます。そのためには、武器の別のコンポーネントである WeaponAmmo も必要になります。そこでは、システムがインベントリ内で検索する弾薬の名前 (たとえば「Bullets」)、インベントリの名前 (通常は MainInventory ですが、設定されている限り、任意の名前を選択できます) を指定できます。インベントリ上でそのように)、武器の弾薬インジケーターが対応する最大弾薬、および装備時に武器がインベントリから弾薬をロードするかどうか
Weapons | TopDown Engine Documentation – https://topdown-engine-docs.moremountains.com/weapons.html#ammo

試行錯誤の結果

Magazine Based のチェックを外してテストすると、弾薬は無制限になりましたが、リロードができず、Magazine Size に応じた残弾数の右上の UI での表記も行われなくなりました。
おそらく Magazine カテゴリは、リロードをするための設定、銃に一度に補充できる弾薬の数やリロード時間などを設定するもので、 Magazine Based のチェックを外すとこれらの設定が無効になるので、Magazine Based のチェックはつけることにしました

TopDownEngine 銃のリロードアクション(待ち時間)を有効にするために MagazineBased は有効にします.

WeaponAmmo コンポーネントにはインベントリ名などを指定するものがあり、インベントリベースの弾薬を用いる銃を作成するために必要と書いてあった気がするので、WeaponAmmo コンポーネントを削除しました。
※ Inspector ウィンドウの WeaponAmmo の左側のチェックをオフにして無効化するだけでは、インベントリベースから変わりませんでした。

TopDownEngine 銃の弾薬をインベントリベースから通常ベースに切り替えるためにインベントリの設定などをしている WeaponAmmo コンポーネントを削除します.

WeaponAmmo コンポーネントがないのにどうやって弾薬を設定するのかという疑問がわきましたが、公式レシピ通りに設定した MMSimpleObjectPooler コンポーネントで Bullet (弾薬) の設定ができます。

TopDownEngine ProjectileWeaponと同じGOに付加するMMSimpleObjectPoolerには弾のプレハブを設定します..

試行錯誤の結果として、TestWeapon (ProjectileWeapon) から WeaponAmmo コンポーネントを除去するだけで、インベントリベースから通常ベースに変えられ、その結果、弾薬無制限かつ指定された弾薬量を消費するとリロードする銃が設定できました。

テスト

インベントリは I キーで表示し、I キーで閉じます。
最初は何も持っていない状態で、マップの弾薬(100)と武器を得るとインベントリに反映されます。
その後、射撃してリロードをした後、インベントリを確認しても弾薬は 100 で減っていません。
これは、インベントリベースの弾薬ではなく、通常版の無制限の弾薬を用いるようになったためです。

TopDownEngine 公式レシピで作成したTestWeaponからWeaponAmmoコンポーネントを除去するとインベントリベースで弾薬を補充せず無制限に補充できるようになりました。Edited SS1

まとめ

今回は、Unity の見下ろし型ゲームの作成支援アセット「TopDown Engine」で、公式レシピから作成した銃プレハブの設定を変更し弾薬は無制限に使用できるけれど、指定した回数ごとにリロードの待ち時間が発生するように変更する手順を紹介しました。
マップで武器を拾った際に装備を指示しなくても自動的に装備させることができる InventoryWeapon の設定も説明しました。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました