Top > ビヘイビアツリー-Composite

UE4.8.1

[[ビヘイビアツリー]]
#contents


* はじめに [#ldcd325c]
ビヘイビアツリー内で、処理を分岐したりする。

* Selector [#ue4bd5ed]

- 子ノードが「FinishExecute」ノードで「Success」でtrueを返すと評価終了。子ノードの評価はそこで終了する。「Selector」ノード自体はtrueを返す。
- falseを返すと、次の子ノードの評価に遷移する。
- 子ノード全てがfalseを返すと、「Selector」ノード自体がfalseを返す。
- 「or」演算なイメージ

&ref(ue4-behavior_composites_selector_01.png);
- 処理順(ノード右下の赤字番号)
1 - Root
↓
2
↓
3 - falseを返す。次の兄弟ノードに移動する。
↓
4
↓
5 - trueを返す。trueなのでここで評価終了。兄弟ノードには移動しない。
↓
(4:子ノードがtrueを返してきたので、4の「Selector」はtrueを返す)
↓
1の「Root」に戻る。

* Sequence [#x6ccf9fc]

- 子ノードが「FinishExecute」ノードで「Success」でtrueを返すと、次のコードに評価が移る。
- falseを返すと子ノードの評価を終了する。Sequenceノード自体はfalseを返す。
- 子ノード全てがtrueを返すと、Sequenceノード自体はtrueを返す。
- 「and」演算なイメージ

&ref(ue4-behavior_composites_sequence_01.png);
- 処理順(ノード右下の赤字番号)
1 - Root
↓
2
↓
3 - trueを返す。次の兄弟ノードに移動する。
↓
4
↓
5 - falseを返す。falseなのでここで評価終了。兄弟ノードには移動しない。
↓
(4:子ノード(5)がfalseを返してきたので、4の「Sequence」はfalseを返す子ノードの評価終了)
↓
(2:子ノード(4)がfalseを返してきたので、2の「Sequence」はfalseを返す。子ノードの評価終了)
↓
1の「Root」に戻る。

* Simple Parallel [#ca1f84aa]
- メインタスクがSuccess, Failure関わらず「Finish Execute」呼んだ時点で評価終了する。「Finish Execute」を呼ぶまでの間、サブタスクが走り続ける。
- 「Finish Mode」が「Immediate」でメインタスク終了でサブタスクも即時終了。
「Delayed」にするとメインタスクが終了した後、サブタスクの評価が全部終了したタイミングでSimple Parallelの評価も終了。
- メインタスクにWait5.0s、サブタスクにWait10.0sを繋げてみると分かりやすい
-- メインタスクにWait5.0s、サブタスクにWait10.0sを繋げてみると分かりやすい


* 例題 [#x5a431be]
&ref(ue4-behavior_composites_ex_01.png);
- 処理順(ノード右下の赤字番号)
1 - Root
↓
2
↓
3
↓
4 - trueを返す。trueなので兄弟ノードに移動。
↓
5 - falseを返す。falseなので兄弟の評価終了。
↓
(3:子ノードがfalseを返して来たので、3の「Sequence」はfalseを返す)
↓
(2:子ノード(3)がfalseを返して来たので、2の「Selector」は次の子ノードを評価する)
↓
6
↓
1の「Root」に戻る。


&ref(ue4-behavior_composites_ex_02.png);
- 処理順(ノード右下の赤字番号)
1 - Root
↓
2
↓
3
↓
4 - trueを返す。trueなので兄弟ノードに移動。
↓
5 - trueを返す。trueなので兄弟ノードに移動するが弟が居ないので評価終了。
↓
(3:子ノードが全部trueを返して来たので、3の「Sequence」はtrueを返す)
↓
(2:子ノード(3)がtrueを返して来たので、2の「Selector」は評価終了、trueを返す。子ノードの6は評価されない)
↓
1の「Root」に戻る。

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS