UE4 C++ GameplayAbilitiesを勉強していくPart.3-3 GameplayEffect StackingとOverflow
やあ
今回は、GameplayEffect
のStacking
とOverflow
について勉強していくよ。
間違いなどあれば教えてくださると助かります!
前回
Stackingについて
・Duration Policy
はHas Duration
かInfinite
。
・GameplayEffect
をスタックすることができる!
とりあえず説明。
Stacking Type
Stacking Type |
説明 |
---|---|
None |
スタックされずに別々のインスタンスとして扱われる。 |
Aggregate by Source |
このGameplayEffect のソースAbilitySystemComponent (ASC)毎にスタックが存在する。 |
Aggregate by Target |
ソースに関係なく、スタックのインスタンスが一つだけ存在する。スタックは最大スタック量まで可能。 |
Aggregate by Source
の例として、
ASC_1を持ったプレイヤーとASC_2を持った敵が、このGameplayEffectを適用していたとしたとき、 プレイヤーには2スタックされている。 敵には5スタックされている。 ということになる。
Aggregate by Target
の例として、
ASC_1を持ったプレイヤーとASC_2を持った敵が、このGameplayEffectを適用していたとしたとき、 プレイヤーには2スタックされている。 敵にも2スタックされている。 ということになる。
Stack Limit Count
Stack Limit Count
: 最大スタック量。
Stack Duration Refresh Policy
Gamepaly Effect
のDuration Policy
がHas Duration
に設定されている時、
持続時間のリセット方法を設定できるよ。
Stack Duration Refresh Policy |
説明 |
---|---|
Reflesh on Successful Application |
スタックに新しく積まれたら、持続時間をリセット。例えば、2秒の持続時間のとき、1秒経過時点でスタックに新しく積まれたら、持続時間を0秒にする。 |
Never Refresh |
スタックに積まれても、リセットされない。 |
Stack Period Reset Policy
Gamepaly Effect
のDuration Policy
がHas Duration
に設定されている時、
周期のリセット方法を設定できるよ。
Stack Duration Refresh Policy |
説明 |
---|---|
Reset on Successful Application |
スタックに新しく積まれたら、周期をリセット。例えば、2秒周期のとき、1秒経過時点でスタックに新しく積まれたら、経過時間を0秒にする。 |
Never Reset |
スタックに積まれても、リセットされない。 |
Stack Expiration Policy
Gamepaly Effect
のDuration Policy
がHas Duration
に設定されている時、
持続時間が経過してGameplay Effect
が終了するときにスタックがどうやって処理されるかを設定できるよ。
Stack Expiration Policy |
説明 |
---|---|
Clear Entire Stack |
全部消す。 |
Remove Single Stack and Refresh Duration |
スタックから一つ取り出し、持続時間をリセットする。 |
Refresh Duration |
持続時間をリセットする。 |
Overflowについて
Stacking
のスタックが最大スタック量を超えたら発生するよ。
Overflow Effects
適用するGameplayEffect
Deny Overflow Application
true なら、スタックが上限を超えた際のGamepalyEffect
は適用されず、持続時間もリセットされないよ。
Clear Stack on Overflow
true なら、スタックが上限を超えた際、スタックをすべてクリアするよ。
Deny Overflow Application
がtrueのときに、設定できる
よくわかんないから実際に使ってみる
良い感じの処理を思いつかないので、
砕蜂(BLEACH)さんの始解「雀蜂」の能力、弐撃決殺みたいに、
一回攻撃を受けたらスタックを積んで、二回目の攻撃を受けたらダメージ(本当は死ぬんだけど)みたいな処理を実装するよ。
Overflow用のGameplayEffectの作成
スタックが最大スタック量を超えたときの処理。
100ダメージを与えるよ
Staking用のGameplayEffectの作成
持続時間10秒の間に、再びGE_Stack
が適用されたらスタックが積まれるよ。
GameplayEffectの適用
`3‘を一回押したらスタックが積まれて、二回目を押すと100ダメージを受けるよ。
テスト
できてるね。
うーん使いどころが難しそうだなーってかんじ
今回はここまで、ありがとうございました。
次回
Expiration
について勉強するよ。
pto8913.hatenablog.com