前書き
第1回から今回の第4回までで、ほぼ遠距離武器の作り方について説明できたかなと思います。今後も遠距離武器で何か新しい機能など紹介しようとは思いますが、何か遠距離武器を作ってみたいと思ったら第1回から第4回を見ていただくことで作れるように紹介できたかなと思います。
今回は遠距離武器の「アイテムとしての作り方」について紹介していこうと思います。アイテムのしての作り方とはなんぞや?っというと今までは直接キャラクタのインスペクターに武器と弾薬を設定する方法で動かしていました、今回はフィールド上に武器と弾薬を設置し、キャラクタがその武器と弾薬に触れるとインベントリに格納、武器の取得をできるようにします。
以前、別記事でドロップアイテム(武器)の作成について紹介しましたがこちらも参考に見ていただくと分かりやすいかなと思います。
今回行うことを簡単に分けると以下のことを行います。
- Itemを取得するためのItemPickerコンポーネントの設定
- 武器と弾薬それぞれのItemクラスの作成
- 武器と弾薬を紐づけする
では、いつも通りDemoの中から「武器」と「弾薬」のアイテムの作りを見ていきましょう。今回はDemoにある「MinimalSandbox2D」の中から以下の「KoalaGunPicker」と「KoalaGunAmmoPicker」について見ていきたいと思います。
また前回(第3回)の遠距離武器の作り方は以下になります。
KoalaGunPickerについて
KoalaGunPickerのインスペクターを見ると以下のようになっています。重要となるのは「ItemPicker」コンポーネントになるのでこちらに紐づく設定について説明していきます。
ItemPickerの設定
ItemPikcerコンポーネントのItemに遠距離武器(InventoryWeaponクラス)を設定していきます。遠距離武器のInventoryWeaponクラスの作り方は次の説明になります。
KoalaGun(InventoryWeaponクラス)について
TopDown Engineに付属されているInventoryシステムを使用してアイテム情報を設定していきます。KoalaGunPickerに設定されているKoalaGunについては以下に格納されているので設定内容を見ていきましょう。
ItemIDと使用するInventoryを設定する
Inventoryクラスを使用する場合、「どのインベントリで使用するのか?」を設定する必要があります。文字列で設定する必要があるため、ヒエラルキー上に設定されているインベントリ名を設定してください。
# デフォルトでは「KoalaMainInventory」という名前が設定されているのでこのままで大丈夫です。
使用するItemPickerを設定する
ここで設定するのは「インベントリからアイテムを捨てた場合にどのアイテムがフィールド上に表示されるのか?」を設定するためにフィールド上で表示するアイテムのPrefabを設定します。
取得した時の個数とアイテムクラスを設定する
アイテムを取得した時、インベントリに1つ武器が取得できればいいのでMaximumStackを”1″に、
ItemClassをWeaponに設定します。
Weaponを設定する
アイテムを取得したときにプレイヤーが装備するアイテムをEquippable Weaponに設定します。
上記の設定を行うことでフィールド上にアイテムを表示し、キャラクタが取得した時に武器を装備するアイテムまでの設定になります。続いて、弾薬の設定についても紹介していきます。
KoalaGunAmmoPickerについて
KoalaGunPickerと同様にKoalaGunAmmoPickerのインスペクターも見ていきたいと思います。KoalaGunAmmoPickerを見ると以下のようになっています。
ItemPickerの設定
KoalaGunPickerとの違いとしてはItemの項目にKoalaGunAmmo(BaseItem)が設定されている所になります。
KoalaGunAmmo(BaseItemクラス)について
KoalaGunAmmoPickerに設定されているKoalaGunAmmoについては以下に格納されているので設定内容を見ていきましょう。
KoalaGunAmmoの設定について
KoalaGunAmmo(BaseItemクラス)はKoalaGun(InventoryWeaponクラス)と異なり、「Equippable Weapon」という項目がありません。弾薬であるため、キャラクタが装備するのではなくインベントリに弾薬を格納するのみの処理で完結します。
武器と弾薬を紐づけする
最後の設定として、遠距離武器と弾薬を紐づける処理が必要になります。第2回でも簡単に触れましたが、遠距離武器を構成するコンポーネントの中にある「Weapon Ammo」が武器と弾薬を紐づけるコンポーネントになります。
以下の赤枠部分が重要な設定となっており、KoalaGunAmmo(BaseItemクラス)で設定した「AmmoID」と「AmmoInventoryName」と同じ設定をWeaponAmmoの「AmmoID」と「AmmoInventoryName」に設定します。こうすることで遠距離武器が使用する弾薬を「指定のインベントリ内で」、「指定のAmmoID」があるかどうか検索してくれるようになります。
新しい武器を作ったときどこを変更すればいいか?
いろいろと前置きが長くなりましたが、結局、新しい武器を作った後にフィールド上にアイテムとして作るには何をすればいいのかをざっと書いていきます。前提として、「遠距離武器」と「弾薬」のPrefabが作成済みとさせてください。
遠距離武器用のInventoryWeaponを作成
まずは遠距離武器がインベントリに格納されるようにInventoryWeaponを使ってアイテムを作成しましょう。以下の場所にKoalaGunなどの遠距離武器用のInventoryWeaponクラスのオブジェクトがあるためリネームし新しく遠距離武器を作ります。
KoalaGunを元とした最低限の修正になります。個々でInventory名などを変えていると以下の修正箇所以外にも修正する必要があるので注意してください。
- ItemID
ユニークな文字列を設定してください - Icon
インベントリ画面を表示した時に遠距離武器を表すIconを設定してください - Prefab
フィールド上に表示するItemPickerを設定してください。
# 一番最初にInventoryWeaponから作っているとまだItemPickerを作ってないと思うので後ほど設定しましょう。 - Equippable Weapon
キャラクタに装備させる遠距離武器を設定しましょう
遠距離武器用のItemPickerを作成
フィールド上にあるアイテムを取得するためにItemPickerを作成しましょう。以下にKoalaGunPickerなど格納されているため、それらをコピー/リネームして新しく作りましょう。
KoalaGunPickerを元とした場合の最低限の修正箇所として、ItemPickerコンポーネントのItemを変更します。先ほど新しく作ったInventoryWeaponを以下のItemに設定することで準備OKです。
弾薬用のInventoryWeaponを作成
KoalaGunと同じところにKoalaGunAmmoがあります。KoalaGunAmmoをコピー/リネームして新しい弾薬を作成してみましょう。修正についてもKoalaGunAmmoを元とした最低限の修正になります。
遠距離武器の時と同じように
- ItemID
- Icon
- Prefab
を修正する必要があります。また弾薬の場合、WeaponInventoryではなくBaseItemクラスを使っているため、WeaponInventoryで設定したEquippable Weaponはありません。
弾薬用のItemPickerを作成
以下の場所にKoalaGunAmmoPickerがあるためこちらをコピー/リネームして新しい弾薬を作ってみてください。
こちらも遠距離武器と同様になりますが、ItemPickerコンポーネントにあるItemを新しく作った弾薬を設定すれば大丈夫です。
武器と弾薬を紐づけ
こちらはフィールド上にアイテム作るための作業とちょっと外れますが弾薬を作るうえで必要となる作業のため忘れずに行ってください。
新しく作った武器にWeapon Ammoコンポーネントを追加して以下のAmmoIDを設定する。
以上で、フィールド上に武器と弾薬を表示するための作業になります。最初はいろいろなオブジェクトを触ってあっちへ行ったりこっちへ行ったりで混乱するかもしれませんが、やってみると決まったオブジェクトに対して修正を加えていることが分かるので慣れてきたら簡単に出来るかなと思います。
まとめ
今回は遠距離武器の作り方~アイテムとしての作り方~について紹介しました。
遠距離武器というよりもInventoryシステムについての説明が多かったのですが、今回のやり方を覚えていただければキャラクタが武器を拾って使用することができたり、弾切れを起こした武器に対して弾を補充できたりといろいろなことができるようになります。メタルスラッグのように武器を拾って弾切れを起こしたらデフォルトの武器に持ち帰るといったことも可能なので慣れてきたら自分なりに工夫をしてみてください。
また、第1回から第4回と長くなりましたが、今後の遠距離武器について新機能だったり知っておいた方がいい情報などありましたら第5回、第6回と続いていくと思いますのでよろしくお願いいたします。
# そろそろ近距離武器についても追加でまとめたいと思います。
次回、第5回については弾薬にフォーカスを当てて紹介していこうと思います。
コメント