前回は、Unity の見下ろし型ゲームの作成支援アセット「TopDown Engine」の公式レシピに従って作成した銃で指定した方向に射撃するコンポーネントの追加と、オートリロードの設定について紹介しました。
前回の記事:TopDownEngine 弾数設定・リロードできる銃の作成2/2 | Compota-Soft-Press
今回は T キーを押さなくても武器アイコン (ItemPicker) に触れたらその武器を自動的に装備する設定と、指定回数でリロードは発生するけれど弾薬は無制限にする方法について紹介します。
※ Unity のバージョン 2021.3.25f1、 TopDown Engine のバージョンは 3.2 です。
武器取得時に自動的に装備する設定
ゲームのマップに配置されている武器アイコン (ItemPicker) を取得した後、現状は T キーで装備・リロードする必要があります。
自動的に装備させるには TestWeapon (InventoryWeapon) の InventoryWeapon コンポーネントの AutoEquipMode プロパティを既定値の NoEquipMode から EquipMode に切り替えます。
これで弾薬・武器を取得すると同時に装備・リロードが行われます。
弾薬を無制限にする
公式サイトに弾薬ベースの武器には、インベントリベースと通常の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 のチェックはつけることにしました。
WeaponAmmo コンポーネントにはインベントリ名などを指定するものがあり、インベントリベースの弾薬を用いる銃を作成するために必要と書いてあった気がするので、WeaponAmmo コンポーネントを削除しました。
※ Inspector ウィンドウの WeaponAmmo の左側のチェックをオフにして無効化するだけでは、インベントリベースから変わりませんでした。
WeaponAmmo コンポーネントがないのにどうやって弾薬を設定するのかという疑問がわきましたが、公式レシピ通りに設定した MMSimpleObjectPooler コンポーネントで Bullet (弾薬) の設定ができます。
試行錯誤の結果として、TestWeapon (ProjectileWeapon) から WeaponAmmo コンポーネントを除去するだけで、インベントリベースから通常ベースに変えられ、その結果、弾薬無制限かつ指定された弾薬量を消費するとリロードする銃が設定できました。
テスト
インベントリは I キーで表示し、I キーで閉じます。
最初は何も持っていない状態で、マップの弾薬(100)と武器を得るとインベントリに反映されます。
その後、射撃してリロードをした後、インベントリを確認しても弾薬は 100 で減っていません。
これは、インベントリベースの弾薬ではなく、通常版の無制限の弾薬を用いるようになったためです。
まとめ
今回は、Unity の見下ろし型ゲームの作成支援アセット「TopDown Engine」で、公式レシピから作成した銃プレハブの設定を変更し弾薬は無制限に使用できるけれど、指定した回数ごとにリロードの待ち時間が発生するように変更する手順を紹介しました。
マップで武器を拾った際に装備を指示しなくても自動的に装備させることができる InventoryWeapon の設定も説明しました。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
- TopDown Engine | システム | Unity Asset Store
- Weapons | TopDown Engine Documentation #ammo
- Weapons | TopDown Engine Documentation #creating-a-weapon-with-ammo
記事一覧 → Compota-Soft-Press
コメント