Meiryo’s blog

やってみて詰まったことを備忘録として残すブログ

【GameplayAbilitySystem】Effectが重複して悩んだ話

事象

Effectが何故か蓄積されていく問題に悩みました。
その時の動画がこちらになります。

爆弾は5ダメージに設定していたのですが
動画後半ではPlayerのHPが10から-30まで減る威力になってしまいました。

原因?

この問題はおそらくEnd Abilityを呼ばずに
Wait Gameplay Eventを複数回呼び出したことが原因ではないかと考えました。

こちらは爆風のAbilityです。
Wait Gameplay EventでWeapon.Hit.Bombイベントを待ちます

こちらは爆風のBPです。
BeginPlayで爆風Abilityを実行します。

爆風BPはSphereCollisionを持ち、プレイヤーに当たったら
Weapon.Hit.BombをタグにしたSend Gameplay Event to Actorを実行します。

この爆風BPは0.5秒でDestroyします。

このBPの問題はプレイヤーに当たらないと
Beginplayで実行した爆風AbilityのEnd Abilityが呼ばれず
Abilityが終了しません。

爆風BPが生成される度にWait Gameplay Eventが呼び出され
プレイヤーが当たった時に呼び出されていた分だけ実行されたのが
今回の問題だったのではないかと思いました。
(※仮説です。本当に原因がそうなのかは確かめていません。)

解決策

BeginPlayでAbilityを呼び出さずに
プレイヤーが当たったらAbilityを呼び出すようにして
確実にEnd Abilityが呼ばれるようにしました。

この修正後、爆風がいくつ生成されてもダメージ量は一定になりました。