Page 1 of 1

Cooldownの使い方がよく分からない

Posted: 2022/12/31 22:58
by Yuki
やりたいことは
「クールダウン時間内はアクションを実行しない」
です。
この動画の41:30でやっている「変数がNullならアクションを実行しない」みたいな制御をしたいです。
https://www.youtube.com/watch?v=OEfHtqIQh1I

CooldownをWaitアクションに追加して、
カウントダウンが始まらないです。
割り込みはNothing、演算はAndです。

Re: Cooldownの使い方がよく分からない

Posted: 2022/12/31 23:31
by caitsithware
Cooldownは、ノードが終了後からの時間経過後にノードを再度アクティブにするDecoratorになっております。
詳しくはドキュメントをご覧ください
Cooldown | Arbor Documentarion

目的の「クールダウン時間内はアクションを実行しない」を実現する方法ですが、
  • クールダウン後に実行したいアクション側にCooldownデコレータを付ける。
    ほかにクールダウン中にしていたいアクションがあるなら優先度が低い側にそのアクションを置いておく。
    (クールダウン中は何もしないならIdleアクション、など)
  • クールダウン中の待機を優先度が高いとみなす場合は、クールダウン中をWaitアクションで処理することにする。
    Waitアクション側の優先度を高くして、クールダウン後に目的のアクションを実行するようにSequencerでつないでおく。
という感じです。

【追記】
優先度が低いノードから優先度の高いノードを「割り込み(再実行)」するには、AbortFlagsをLowerPriorityにする必要があります。
Cooldownデコレータは、基本的に再実行させるためにつけるためAbortFlagsはLowerPriorityにしてください。
AbortFlagsについて詳しくはドキュメントをご覧ください。
AbortFlagsについて

Re: Cooldownの使い方がよく分からない

Posted: 2023/01/01 20:41
by Guest
Cooldownはそういう仕様であるということで了解しました。
Decoratorを自作したところ望み通りの挙動が得られました。

ご提案のやり方は、
私がビヘイビアツリーの完全な初心者であるため、全くイメージがつかめませんでした。

私のビヘイビアーツリーの設計がよくない気がしますが、ともかくありがとうございました。