前回は Unity の「TopDown Engine」アセットの公式レシピを参考に 2D 用の Weapon with Ammo 版の銃のプレハブを作成して、テストプレイを行いました。
前回の記事:TopDownEngine 弾数設定・リロードできる銃の作成1/2 | Compota-Soft-Press

今回は、前回公式レシピを参照に作成した Weapon with Ammo 版の銃プレハブ TestWeapon の右方向にしか撃てない問題の解決方法とオートリロードの設定方法を紹介します。
※ Unity のバージョン 2021.3.25f1、 TopDown Engine のバージョンは 3.2 です。
右方向にしか撃てない問題の解決方法
サンプル KoalaDungeon の ItemPicker に触れた際に得られる武器を、公式レシピに従って TestWeapon (ProjectileWeapon) に変えました。

変更前の KoalaRifle (ProjectileWeapon) と比較して、足りないコンポーネントを追加することで解決しました。
AutoAim2D コンポーネントの追加
もともと設定されていたのは KoalaRifle (ProjectileWeapon) だったので、そちらのコンポーネントの構成を確認すると AutoAim2D コンポーネントが付加されていました。
※ Assets/TopDownEngine/Demos/Koala2D/Prefabs/Weapons/Weapons/KoalaRifle.prefab

Unity では、コンポーネント単位でコピー、ペーストができるので、その機能を使って、サンプル KoalaRifle の WeaponAim2D コンポーネントを、公式レシピに従って作った習作 TestWeapon に貼り付けます。
※ Add Component ボタンから追加して、設定を調整しても結果は同じです。
コピーしたいコンポーネント(KoalaRifle の WeaponAim2D) の右上の…を押してメニューを開き、Copy Component を選択してコピーします。

次に TestWeapon を選択して、付加したいずれかのコンポーネントの…のメニューを開き、 Paste Component As New を選ぶと、 KoalaRifle からコピーした内容の WeaponAim2D コンポーネントが追加されます。
※すでに WeaponAim2D がある場合は、 Paste Component Values で設定内容だけを上書きできます。
.png)
TestWeapon に KoalaRifle と同じ設定の WeaponAim2D コンポーネントが追加されました。

銃の連射速度の調整
ついでに銃の連射速度も以前に行った方法で調整しておきます。
ProjectileWeapon コンポーネントの Use カテゴリを開いて Time Between Uses (既定では 1 秒) を変更することで、射撃の間隔、連射速度を調整できます。
他のサンプルの値を参考に 0.4 (秒) に変更しました。

テスト
TestWeapon と弾薬の ItemPicker を拾った後、 T キーで装備・リロードします。
その後、マウスポインタの位置に照準が表示され、マウス左ボタンでその方向に射撃できました。
オートリロードの設定
前回の TestWeapon では、射撃の入力をしていても、弾がなくなると T キーでリロードしないと射撃ができませんでした。
弾切れになった際に射撃の入力をするとリロードするように設定します。
Auto Reload の設定
射撃の入力で弾切れの際にリロードも行うようにするには、ProjectileWeapon コンポーネントの Magazine カテゴリの Auto Reload を有効にします。
※テスト時間を短縮するため Magazine Size を既定値の 10 から 5 に変更しました。

テスト
先ほど追加した WeaponAim2D では AimControl が Mouse になっているので、射撃の入力はマウス左ボタンになり、照準はマウスポインタと一致します。
Auto Reload が OFF の状態では、残弾数が 0 になった後、射撃の入力(クリック)をしてもリロードが行われません。この場合はリロード専用 (今回は T キー) の入力が必要です。
Auto Reload が ON の状態では、残弾数が 0 になった後、射撃の入力(クリック)をするとリロードされます。Reload Time プロパティで 2 を指定しているので 2 秒後に弾が補充されます。

まとめ
今回は、Unity の見下ろし型ゲームの作成支援アセット「TopDown Engine」の公式レシピに沿って作成した銃プレハブに、指定した方向に射撃させる WeaponAim2D コンポーネントを追加し、ProjectileWeapon コンポーネントの設定で連射速度の変更と、残弾数が 0 の際に攻撃するとリロードされる Auto Reload について紹介しました。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
- TopDown Engine | システム | Unity Asset Store
- Weapons | TopDown Engine Documentation #creating-a-weapon-with-ammo
記事一覧 → Compota-Soft-Press
コメント