アニメーションする Task は Running しか返さないというのはどうか?
止める条件があるのなら、その親に Conditional Evaluator を置き、これが失敗を返したら、子であるアニメーション Task は中断されるため
参考
目的地が設定されているか?
yes→目的地へ向かう
no→次の行動を選択
selector
sequence
- hasDestination
- gotoDestination
sequence
- nextAction
結局アクションを定義してから組み合わせになるのか
ランダムに目的地を決める
プレイヤーを見つけているか?
プレイヤーの方向の目的地を決める
目的地は決まったか?
目的地に向かって歩く
目的地に着いたか?
十分プレイヤーに近づいたか?
プレイヤーの方向を向いているか?
プレイヤーの方向を向く
座り込む
座り続ける
立ち上がる
うーん、一連のながれが sequence で、その一連のながれが通らないときに selector で別の sequence へ流れるかんじ?
最初は
十分プレイヤーに近づいたか?→yes→プレイヤーの方向を向く→十分プレイヤーに近づいたか?→yes→座り込む→十分プレイヤーに近づいたか?→yes→プレイヤーの方向を向いているか?→yes→座り続ける
目的地に着いたか?→yes→
目的地は決まったか?→yes→目的地に向かって歩く
プレイヤーを見つけているか?→yes→プレイヤーの方向の目的地を決める
え、ループできるのか
ループってどうやってツリー表現
考え中
なるほど、継続しつづけるアクション 待機モーションなどを running し続けるで良さそう
これが最終的な安置として
どうやって抜け出すの?
それが前回勉強したなにかの conditional なんちゃら
Selector Evaluator
実行中を返す Action が子タスクの優先度の低いものであったなら、それより高い優先度の Action の評価をもう一度行う
これもそうだけど、もっと self とか low priority とかでもできたような?
Sequence NodeのAbort TypeをNoneからSelfに変更すると、子ノードの running 中の左側を毎回評価して、failure なら runnning を中断できる
つまり、抜け出せる AbortType self で
または、同階層の右側が running でも Abort Type Lower Priority でも
なるほど Abort の目的語が Lower Priority で右がわ、Self が自身の子ノードという意味だったのか
やっと解読できてきた
つまり