TopDownEngine Weapon設定値の調査3/4

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

前回の記事:TopDownEngine ProjectileWeapon 既定値とサンプルの比較2/4 | Compota-Soft-Press

ProjectileWeaponコンポーネント Recoil グループ変更前後

今回は前回の続きで、自作とサンプルの武器プレハブそれぞれの ProjectileWeapon コンポーネントの値の意味についてグループ単位(今回は 12 個中 3 個) で調べ、差分を確認します。
今回紹介するグループの設定によって射撃時に呼び出されるイベントを指定し、射撃時に薬きょうを放出することができました。
※ Unity のバージョン 2021.3.25f1、 TopDown Engine のバージョンは 3.2 です。

Animation グループ (Weapon.cs)

サンプルの値に合わせましたが変化はわかりませんでした。

Unity TopDownEngine 自作(TestWeapon)とサンプル(KoalaRifle)のProjectileWeaponコンポーネント差分8 Animation
Animatorsthe other animators (other than the Character’s) that you want to update every time this weapon gets used

この武器が使用されるたびに更新したい他のアニメーター (キャラクター以外)
※Model ゲームオブジェクトの設定手順は後述します。
PerformAnimatorSanityChecksIf this is true, sanity checks will be performed to make sure animator parameters exist before updating them. Turning this to false will increase performance but will throw errors if you’re trying to update non existing parameters. Make sure your animator has the required parameters.

これが true の場合、アニメーター パラメーターを更新する前に健全性チェックが実行され、アニメーター パラメーターが存在するかどうかが確認されます。これを false にするとパフォーマンスは向上しますが、存在しないパラメータを更新しようとするとエラーがスローされます。アニメーターが必要なパラメータを持っていることを確認してください。
MirrorCharacterAnimatorParametersif this is true, the weapon’s animator(s) will mirror the animation parameter of the owner character (that way your weapon’s animator will be able to ‘know’ if the character is walking, jumping, etc)

これが true の場合、武器のアニメーターはオーナー キャラクターのアニメーション パラメーターを反映します (これにより、武器のアニメーターはキャラクターが歩いているか、ジャンプしているかなどを「知る」ことができます)
プロパティ名とツールチップの説明文(英語)とその機械翻訳の日本語文。

Animator Controller を持つ Model を Animators リストへ追加

サンプルと同じようにプレハブ内の Model ゲームオブジェクトを Animators リストへ追加する手順です。

最初にサンプル KoalaRifle のルートのゲームオブジェクトに付加している ProjectileWeapon コンポーネントの Animation グループ内の Animators リストの 1 個の要素をダブルクリックして、そのゲームオブジェクトが同じプレハブ内の Model ゲームオブジェクトであることを確認しましょう。

TopDownEngine サンプルが ProjectileWeapon の Animators に指定している要素をダブルクリックして選択します.

KoalaRifle プレハブ内の Model ゲームオブジェクトは、さきほどの Animators リストに登録されるための条件である Animator コンポーネントを付加しています。
その中の Controller プロパティの値をダブルクリックして、 Animator Controller アセットの場所を Project ウィンドウで選択します。

TopDownEngine サンプルが ProjectileWeapon の Animators に指定している同プレハブ内のGOが設定している Animator Controller をダブルクリックで選択します.

Project ウィンドウに KoalaRifle プレハブの Model ゲームオブジェクトが設定していた Animator Controller 「 KoalaRifleAnimator 」が見つかったら、それを選択して Ctrl + D などで複製して、 複製したアセットを「TestWeaponAnimator」にリネームします。

TopDownEngine サンプルが ProjectileWeapon の Animators に指定している同プレハブ内のGOが設定している Animator Controller を複製&リネームします..

ここからは自作の TestWeapon の設定です。
Project ウィンドウ内で TestWeapon プレハブをダブルクリックして Hierarchy ウィンドウに表示しましょう。

直前に複製した Animator Controller を TestWeapon プレハブ内の Model ゲームオブジェクトの Animator コンポーネントの Contoller プロパティに設定します。
※ Model 内に Animator コンポーネントがなければ Add Component で追加してください。

TopDownEngine サンプルから複製した Animator Controller を自作の TestWeapon プレハブを開いて同じ構造の Model GO の Animator Controller に設定します..

TestWeapon プレハブの Model の Animator コンポーネントの設定が済んだら、今度はルートのゲームオブジェクトを選択して ProjectileWeapon コンポーネントの Animation グループの Animators リストの要素を + ボタンなどで 1 増やして、1 枠分だけ作成します。

自作の TestWeapon プレハブの ProjectileWeapon コンポーネントの Animators の要素を1つ増やして同プレハブ内の Model GO を設定します.

増やした Animators リストの要素は最初 None (空っぽ)なので右側の〇ボタンなどで、同プレハブ内の Model ゲームオブジェクトを選択しましょう。

自作の TestWeapon プレハブの ProjectileWeapon コンポーネントの Animators の要素を1つ増やして同プレハブ内の Model GO を設定します2.

これで Animators リストへサンプルから複製した Animator Controller を設定した Model ゲームオブジェクトを KoalaRifle と同様に設定できました。

Animation Parameters Names グループ (Weapon.cs)

サンプルの値に合わせましたが変化はわかりませんでした。

Unity TopDownEngine 自作(TestWeapon)とサンプル(KoalaRifle)のProjectileWeaponコンポーネント差分9 Animation Parameters Names
WeaponAnimationIDthe ID of the weapon to pass to the animator
アニメーターに渡す武器のID
IdleAnimationParameterthe name of the weapon’s idle animation parameter : this will be true all the time except when the weapon is being used

武器のアイドルアニメーションパラメータの名前: これは、武器が使用されているときを除いて常に true になります。
StartAnimationParameterthe name of the weapon’s start animation parameter : true at the frame where the weapon starts being used

武器の開始アニメーション パラメータの名前: 武器が使用され始めるフレームで true
DelayBeforeUseAnimationParameterthe name of the weapon’s delay before use animation parameter : true when the weapon has been activated but hasn’t been used yet

武器の使用前の遅延アニメーション パラメーターの名前: 武器がアクティブ化されているがまだ使用されていない場合は true
SingleUseAnimationParameterthe name of the weapon’s single use animation parameter : true at each frame the weapon activates (shoots)

武器の使い捨てアニメーション パラメータの名前: 武器がアクティブになる (射撃する) 各フレームで true
UseAnimationParameterthe name of the weapon’s in use animation parameter : true at each frame the weapon has started firing but hasn’t stopped yet

使用中の武器の名前アニメーション パラメータ : 武器が発砲を開始したがまだ停止していない各フレームで true
DelayBetweenUsesAnimationParameterthe name of the weapon’s delay between each use animation parameter : true when the weapon is in use

各使用間の武器の遅延の名前アニメーション パラメータ: 武器が使用中の場合は true
StopAnimationParameterthe name of the weapon stop animation parameter : true after a shot and before the next one or the weapon’s stop

武器停止アニメーションパラメータの名前: ショット後、次のショットまたは武器の停止前に true
ReloadStartAnimationParameterthe name of the weapon reload start animation parameter

武器のリロード開始アニメーションパラメータの名前
ReloadAnimationParameterthe name of the weapon reload animation parameter

武器のリロードアニメーションパラメータの名前
ReloadStopAnimationParameterthe name of the weapon reload end animation parameter

武器のリロード終了アニメーションパラメータの名前
WeaponAngleAnimationParameterthe name of the weapon’s angle animation parameter

武器の角度アニメーションパラメータの名前
WeaponAngleRelativeAnimationParameterthe name of the weapon’s angle animation parameter, adjusted so it’s always relative to the direction the character is currently facing

武器の角度アニメーション パラメータの名前。キャラクターが現在向いている方向を常に基準にするように調整されます。
EquippedAnimationParameterthe name of the parameter to send to true as long as this weapon is equipped, used or not. While all the other parameters defined here are updated by the Weapon class itself, and passed to the weapon and character, this one will be updated by CharacterHandleWeapon only.

この武器が装備されているか、使用されているかどうかにかかわらず、true に送信するパラメータの名前。ここで定義されている他のパラメータはすべて Weapon クラス自体によって更新され、武器とキャラクターに渡されますが、このパラメータは CharacterHandleWeapon によってのみ更新されます。
プロパティ名とツールチップの説明文(英語)とその機械翻訳の日本語文。

Feedbacks グループ (Weapon.cs)

ついに薬きょうパーティクルが射撃時に放出されるようになりました。
おそらく変化がわからなかった Animation、Animation Parameters Names グループで行ってきた設定が、Feedbacks グループの設定と連携した結果です。

Unity TopDownEngine 自作(TestWeapon)とサンプル(KoalaRifle)のProjectileWeaponコンポーネント差分10 Feedbacks
WeaponStartMMFeedbackthe feedback to play when the weapon starts being used
武器の使用開始時に再生されるフィードバック
WeaponUsedMMFeedbackthe feedback to play while the weapon is in use
武器の使用中に再生するフィードバック
※プレハブ内への設置手順は後述します。
WeaponUsedMMFeedbackAltif set, this feedback will be used randomly instead of WeaponUsedMMFeedback

設定されている場合、このフィードバックは WeaponusedMMFeedback の代わりにランダムに使用されます。
WeaponStopMMFeedbackthe feedback to play when the weapon stops being used
武器の使用を停止したときに再生されるフィードバック
WeaponReloadMMFeedbackthe feedback to play when the weapon gets reloaded
武器がリロードされたときに再生されるフィードバック
WeaponReloadNeededMMFeedbackthe feedback to play when the weapon gets reloaded
武器がリロードされたときに再生されるフィードバック
プロパティ名とツールチップの説明文(英語)とその機械翻訳の日本語文。
ProjectileWeaponコンポーネント Feedbacks グループ変更前後

Feedback ゲームオブジェクトを自作プレハブへ追加

サンプル KoalaRifile のプレハブ内には「WeaponUsedMMFeedback」ゲームオブジェクトがあります。
ProjectileWeapon コンポーネントの WeaponUsedMMFeedback プロパティでは、このゲームオブジェクトを設定していますが、自作の TestWeapon のプレハブ内には存在しないので設定できません。

そのため、サンプル KoalaRifle のそのゲームオブジェクトをコピーして、自作 TestWeapon の同じ階層にペーストします。

コピーするためにサンプル KoalaRifle のプレハブを Project ウィンドウでダブルクリックして Hierarchy ウィンドウで構成を開きます。
その中の WeaponUsedMMFeedback ゲームオブジェクトをコピーしましょう。

TopDownEngine サンプルのプレハブ内の WeaponUsedMMFeedback をコピーします.

今度は、Project ウィンドウ内で自作の TestWeapon プレハブをダブルクリックして Hierarchy ウィンドウで構成を開き、同じ階層に Paste メニューで貼り付けます。

TopDownEngine サンプルのプレハブ内でコピーした WeaponUsedMMFeedback を自作の TestWeapon プレハブ内に同様に Paste メニューで貼り付けます..

異なるプレハブにコピーしたせいで、自作の TestWeapon プレハブ内の WeaponUsedMMFeedback ゲームオブジェクトの MMFeedbacks コンポーネントの Bound Particle System が Missing になってしまっているので、同プレハブ内の MuzzleFlare を割り当ててください。

これで ProjectileWeapon コンポーネントの Feedbacks グループの WeaponUsedMMFeedback プロパティに設定する WeaponUsedMMFeedback ゲームオブジェクトを自作の TestWeapon プレハブに設置できました。

今回はここまで

今回は、UnityTopDown Engine アセットのサンプル KoalaRifle を見本に、作成した薬きょうパーティクルを放出する Particle System がなぜか武器を装備した瞬間しか放出されないテストプレイの現象を説明しました。
その対策のために ProjectileWeapon コンポーネントの自作とサンプルのプロパティの違いをグループ単位 (Animation, Animation Parameters Names, Feedbacks) で変化させ、ついに射撃中に薬きょうパーティクルが放出されるようになりました。

これで当初の問題は解決しましたが、 ProjectileWeapon コンポーネントの残りのグループ 2 個についてもサンプルとの差分を中心にプロパティの説明と効果を次回も紹介します。

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