前回は、Unity の Particle System の Renderer モジュールの Sorting Layer, Order in Layer の値を変更することで、他のスプライト画像と重なりあうときの順番が変更されることを、追加したテスト用のスプライト画像で確認しました。
前回の記事:TopDownEngine薬莢PatricleSystem調査7/7 | Compota-Soft-Press
これで、薬きょうを放出する Particle System コンポーネントを持つ Shells の値と既定値との差分は全て変化を確認し、自作の TestWeapon プレハブの PSDefault ゲームオブジェクトの Particle System も同じ値に変えました。
今回はテストプレイをしてみた結果、武器を装備した直後だけ薬きょう画像のパーティクルが放出され、射撃時には放出されない問題について、武器プレハブの自作とサンプルのそれぞれの ProjectileWeapon コンポーネントの値の意味についてグループ単位(今回は 12 個中 3 個) で調べ、差分を確認します。
今回紹介するグループの設定で、連射速度とリロードした後の弾数を調整できます。
※ Unity のバージョン 2021.3.25f1、 TopDown Engine のバージョンは 3.2 です。
装着直後だけ薬きょうパーティクルが放出される問題
薬きょうパーティクルは、サンプル(TopDownEngine の KoalaRifle の Shells ゲームオブジェクト)では、射撃をしたときにある程度ランダムな位置に放物線を描いて落下して 20 秒で縮小・透明になって消えます。
しかし、自作の銃プレハブでテストプレイすると、銃を拾って自動的に装備する際に1度だけ薬きょう画像のパーティクルが放出され、射撃などの他のタイミングでは放出されません。
ProjectileWeapon コンポーネントの比較
サンプルと自作の銃プレハブのルートのゲームオブジェクトに付加されている ProjectileWeapon コンポーネントの値を 12 個に分けられたグループ単位で変化させていき、それぞれのグループ内プロパティの説明や、効果について紹介しながら、上記の問題を解決していきます。
以前に 3D 用の銃プレハブ MyWeapon を作成しているときに比較して、そのときの値を流用しているのですが、2D の場合は設定が違うのかもしれません。
また、そのときは射撃の連射速度を調整することが目的だったため、それが達成されたあとのモジュールは比較していませんでした。
参照:TopDownEngine 3D向け銃の作成&「消しゴム銃」の仕様 | Compota-Soft-Press
※以降の表の中で差分のあるプロパティ名は太字にしています。
ID グループ (Weapon.cs)
差分がないので各プロパティの説明だけ記載します。
WeaponName | the name of the weapon, only used for debugging 武器の名前。デバッグにのみ使用されます。 |
Use グループ (Weapon.cs)
サンプルの値に合わせると連射速度が速くなりました。
InputAuthorized | if this is true, this weapon will be able to read input (usually via the CharacterHandleWeapon ability), otherwise player input will be disabled これが true の場合、この武器は入力を読み取ることができます (通常は CharacterHandleWeapon 機能を介して)。それ以外の場合、プレイヤーの入力は無効になります。 |
TriggerMode | is this weapon on semi or full auto ? この武器はセミオートですかフルオートですか? |
DelayBeforeUse | the delay before use, that will be applied for every shot 使用前の遅延。すべてのショットに適用されます。 |
DelayBeforeUseReleaseInterruption | whether or not the delay before used can be interrupted by releasing the shoot button (if true, releasing the button will cancel the delayed shot シュートボタンを放すことで使用前の遅延を中断できるかどうか (true の場合、ボタンを放すと遅延ショットがキャンセルされます) |
TimeBetweenUses | the time (in seconds) between two shots 2 つのショットの間の時間 (秒単位) |
TimeBetweenUsesReleaseInterruption | whether or not the time between uses can be interrupted by releasing the shoot button (if true, releasing the button will cancel the time between uses |
UseBurstMode | if this is true, the weapon will activate repeatedly for every shoot request これが true の場合、武器は射撃要求ごとに繰り返し起動します。 |
BurstLength | the amount of ‘shots’ in a burst sequence バーストシーケンス内の「ショット」の量 |
BurstTimeBetweenShots | the time between shots in a burst sequence (in seconds) バースト シーケンスのショット間の時間 (秒単位) |
Magazine グループ (Weapon.cs)
Magazine Size をサンプルの値に合わせると、一度に連射できる弾数が増えました。
Magazine Based, Auto Reload プロパティは、弾数を無限にするために以前に設定したものなので変更しません。
MagazineBased | whether or not the weapon is magazine based. If it’s not, it’ll just take its ammo inside a global pool 武器がマガジンベースかどうか。そうでない場合は、弾薬をグローバルプール内に持ち込むだけです |
MagazineSize | the size of the magazine |
AutoReload | if this is true, pressing the fire button when a reload is needed will reload the weapon. Otherwise you’ll need to press the reload button これが真の場合、リロードが必要なときに射撃ボタンを押すと武器がリロードされます。それ以外の場合は、リロードボタンを押す必要があります |
NoInputReload | if this is true, reload will automatically happen right after the last bullet is shot, without the need for input これが true の場合、入力を必要とせずに、最後の弾丸が発射された直後にリロードが自動的に行われます。 |
ReloadTime | the time it takes to reload the weapon 武器のリロードにかかる時間 |
AmmoConsumedPerShot | the amount of ammo consumed everytime the weapon fires 武器が発砲するたびに消費される弾薬の量 |
AutoDestroyWhenEmpty | if this is set to true, the weapon will auto destroy when there’s no ammo left これを true に設定すると、弾薬がなくなったときに武器が自動的に破壊されます。 |
AutoDestroyWhenEmptyDelay | the delay (in seconds) before weapon destruction if empty 空の場合、武器が破壊されるまでの遅延 (秒単位) |
CurrentAmmoLoaded | the current amount of ammo loaded inside the weapon 武器内に装填されている現在の弾薬の量 |
今回はここまで
今回は、Unity の TopDown Engine アセットのサンプル KoalaRifle を見本に、作成した薬きょうパーティクルを放出する Particle System がなぜか武器を装備した瞬間しか放出されないテストプレイの現象を説明し、その対策のために ProjectileWeapon コンポーネントの自作とサンプルのプロパティの違いをグループ単位 (ID, Use, Magazine) で変化させ、連射速度や弾数の変更による効果を紹介しました。
次回は、まだ紹介していないグループについて紹介します。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
- TopDown Engine | システム | Unity Asset Store
- TopDown Engine: MoreMountains.TopDownEngine.ProjectileWeapon Class Reference
- TopDown Engine Weapon.cs, ProjectileWeapon.cs のツールチップ文章。
記事一覧 → Compota-Soft-Press
コメント