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」に戻る。 |