TopDownEngine Weapon設定値の調査1/4

前回は、Unity の Particle System の Renderer モジュールの Sorting Layer, Order in Layer の値を変更することで、他のスプライト画像と重なりあうときの順番が変更されることを、追加したテスト用のスプライト画像で確認しました。

前回の記事:TopDownEngine薬莢PatricleSystem調査7/7 | Compota-Soft-Press

Unity Particle System Renderer モジュールの SortingLayer が変更後(Shells の値)の場合はパーティクルはスプライト画像の手前に表示されます.

これで、薬きょうを放出する Particle System コンポーネントを持つ Shells の値と既定値との差分は全て変化を確認し、自作の TestWeapon プレハブの PSDefault ゲームオブジェクトの Particle System も同じ値に変えました。

今回はテストプレイをしてみた結果、武器を装備した直後だけ薬きょう画像のパーティクルが放出され、射撃時には放出されない問題について、武器プレハブの自作とサンプルのそれぞれの ProjectileWeapon コンポーネントの値の意味についてグループ単位(今回は 12 個中 3 個) で調べ、差分を確認します。

今回紹介するグループの設定で、連射速度リロードした後の弾数を調整できます。
※ Unity のバージョン 2021.3.25f1、 TopDown Engine のバージョンは 3.2 です。

装着直後だけ薬きょうパーティクルが放出される問題

薬きょうパーティクルは、サンプル(TopDownEngine の KoalaRifle の Shells ゲームオブジェクト)では、射撃をしたときにある程度ランダムな位置に放物線を描いて落下して 20 秒で縮小・透明になって消えます。

しかし、自作の銃プレハブでテストプレイすると、銃を拾って自動的に装備する際に1度だけ薬きょう画像のパーティクルが放出され、射撃などの他のタイミングでは放出されません。

Unity TopDownEngine KoaraRifle をまねた自作の銃は装備直後に薬きょうパーティクルが放出されます.
Unity TopDownEngine KoaraRifle をまねた自作の銃は射撃しても薬きょうパーティクルが放出されません.

ProjectileWeapon コンポーネントの比較

サンプルと自作の銃プレハブのルートのゲームオブジェクトに付加されている ProjectileWeapon コンポーネントの値を 12 個に分けられたグループ単位で変化させていき、それぞれのグループ内プロパティの説明や、効果について紹介しながら、上記の問題を解決していきます。

以前に 3D 用の銃プレハブ MyWeapon を作成しているときに比較して、そのときの値を流用しているのですが、2D の場合は設定が違うのかもしれません。
また、そのときは射撃の連射速度を調整することが目的だったため、それが達成されたあとのモジュールは比較していませんでした。
参照:TopDownEngine 3D向け銃の作成&「消しゴム銃」の仕様 | Compota-Soft-Press

※以降の表の中で差分のあるプロパティ名は太字にしています。

ID グループ (Weapon.cs)

差分がないので各プロパティの説明だけ記載します。

Unity TopDownEngine 自作(TestWeapon)とサンプル(KoalaRifle)のProjectileWeaponコンポーネント差分1 ID
WeaponNamethe name of the weapon, only used for debugging
武器の名前。デバッグにのみ使用されます。
プロパティ名とツールチップの説明文(英語)とその機械翻訳の日本語文。

Use グループ (Weapon.cs)

サンプルの値に合わせると連射速度が速くなりました。

Unity TopDownEngine 自作(TestWeapon)とサンプル(KoalaRifle)のProjectileWeaponコンポーネント差分2 Use
InputAuthorizedif this is true, this weapon will be able to read input (usually via the CharacterHandleWeapon ability), otherwise player input will be disabled

これが true の場合、この武器は入力を読み取ることができます (通常は CharacterHandleWeapon 機能を介して)。それ以外の場合、プレイヤーの入力は無効になります。
TriggerModeis this weapon on semi or full auto ?
この武器はセミオートですかフルオートですか?
DelayBeforeUsethe delay before use, that will be applied for every shot
使用前の遅延。すべてのショットに適用されます。
DelayBeforeUseReleaseInterruptionwhether 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 の場合、ボタンを放すと遅延ショットがキャンセルされます)
TimeBetweenUsesthe time (in seconds) between two shots
2 つのショットの間の時間 (秒単位)
TimeBetweenUsesReleaseInterruptionwhether 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

撮影射撃ボタンを放すことで使用間の時間を中断できるかどうか (true の場合、ボタンを放すと使用間の時間がキャンセルされます)
UseBurstModeif this is true, the weapon will activate repeatedly for every shoot request

これが true の場合、武器は射撃要求ごとに繰り返し起動します。
BurstLengththe amount of ‘shots’ in a burst sequence
バーストシーケンス内の「ショット」の量
BurstTimeBetweenShotsthe time between shots in a burst sequence (in seconds)

バースト シーケンスのショット間の時間 (秒単位)
プロパティ名とツールチップの説明文(英語)とその機械翻訳の日本語文。
ProjectileWeaponコンポーネント Use グループ変更前後

Magazine グループ (Weapon.cs)

Magazine Size をサンプルの値に合わせると、一度に連射できる弾数が増えました。
Magazine Based, Auto Reload プロパティは、弾数を無限にするために以前に設定したものなので変更しません。

Unity TopDownEngine 自作(TestWeapon)とサンプル(KoalaRifle)のProjectileWeaponコンポーネント差分3 Magazine
MagazineBasedwhether or not the weapon is magazine based. If it’s not, it’ll just take its ammo inside a global pool

武器がマガジンベースかどうか。そうでない場合は、弾薬をグローバルプール内に持ち込むだけです
MagazineSizethe size of the magazine
雑誌マガジンのサイズ
AutoReloadif 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

これが真の場合、リロードが必要なときに射撃ボタンを押すと武器がリロードされます。それ以外の場合は、リロードボタンを押す必要があります
NoInputReloadif this is true, reload will automatically happen right after the last bullet is shot, without the need for input

これが true の場合、入力を必要とせずに、最後の弾丸が発射された直後にリロードが自動的に行われます。
ReloadTimethe time it takes to reload the weapon
武器のリロードにかかる時間
AmmoConsumedPerShotthe amount of ammo consumed everytime the weapon fires
武器が発砲するたびに消費される弾薬の量
AutoDestroyWhenEmptyif this is set to true, the weapon will auto destroy when there’s no ammo left

これを true に設定すると、弾薬がなくなったときに武器が自動的に破壊されます。
AutoDestroyWhenEmptyDelaythe delay (in seconds) before weapon destruction if empty

空の場合、武器が破壊されるまでの遅延 (秒単位)
CurrentAmmoLoadedthe current amount of ammo loaded inside the weapon
武器内に装填されている現在の弾薬の量
プロパティ名とツールチップの説明文(英語)とその機械翻訳の日本語文。

今回はここまで

今回は、UnityTopDown Engine アセットのサンプル KoalaRifle を見本に、作成した薬きょうパーティクルを放出する Particle System がなぜか武器を装備した瞬間しか放出されないテストプレイの現象を説明し、その対策のために ProjectileWeapon コンポーネントの自作とサンプルのプロパティの違いをグループ単位 (ID, Use, Magazine) で変化させ、連射速度や弾数の変更による効果を紹介しました。

次回は、まだ紹介していないグループについて紹介します。

参照サイト 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をコピーしました