FSM์œผ๋กœ ai ๋งŒ๋“ค๊ณ  ๋‚˜์„œ bt๋กœ๋„ ๋งŒ๋“ค์–ด ๋ณด๊ณ  ์‹ถ์–ด์„œ ๊ณต๋ถ€์ค‘์ž…๋‹ˆ๋‹ค.
์Œ ์ง€๊ธˆ ์ œ๊ฐ€ ํ—ท๊ฐˆ๋ฆฌ๋Š”๊ฒŒ ์˜ˆ๋ฅผ๋“ค์–ด attack ํ–‰๋™ ํŠธ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

IsInMeleeAttackRange = 3f
IsInRangeAttackRange = 6f
attackTree = Selector (

new Sequence

(

Condition(IsInMeleeAttackRange),

Action(meleeAttack),

),

new Sequenceย ย ย ย 

(ย ย ย ย 

Condition(IsInRangeAttackRange),ย ย ย ย 

Action(rangeAttack),ย ย ย ย 

),

)

์ด๋ ‡๊ฒŒ ์žˆ๋‹ค๊ณ  ๊ฐ€์ • ํ–ˆ์„ ๋•Œ, ๊ณต๊ฒฉ ํŠธ๋ฆฌ ์˜ˆ์ œ์—์„œ, ์ฒ˜์Œ์— ํ”Œ๋ ˆ์ด์–ด์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ 5์ผ ๋•Œ RangeAttack์ด ์‹คํ–‰๋˜๋‹ค๊ฐ€ ๋‹ค์Œ ํ”„๋ ˆ์ž„์— ํ”Œ๋ ˆ์ด์–ด๊ฐ€ 2์˜ ๊ฑฐ๋ฆฌ๋กœ ๊ฐ€๊นŒ์›Œ์ง€๋ฉด, IsInMeleeAttackRange ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์–ด ์›๊ฑฐ๋ฆฌ ๊ณต๊ฒฉ ์ค‘์— ๊ทผ์ ‘ ๊ณต๊ฒฉ์ด ํŠธ๋ฆฌ๊ฑฐ๋  ๊ฒƒ ๊ฐ™์€๋ฐ ์™œ๋ƒํ•˜๋ฉด ํŠธ๋ฆฌ ๊ตฌ์กฐ์ƒ meleeattackย ์‹œํ€€์Šค ๋…ธ๋“œ๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๊ณ  ์›๊ฑฐ๋ฆฌ๊ณต๊ฒฉ ์‹œํ€€์Šค๊ฐ€ ์‹คํ–‰์ด ๋˜๋‹ค๋ณด๋‹ˆ,,, ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด private BehaviorTreeNode runningNode ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋…ธ๋“œ๊ฐ€ Success๋ฅผ ๋ฐ˜ํ™˜ํ•œ ํ›„์—๋งŒ ๋‹ค๋ฅธ ์ž์‹ ๋…ธ๋“œ๋ฅผ ํ‰๊ฐ€ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ• ๊นŒ์š”? repeatuntillsucess decorator node๊ฐ™์€๊ฑฐ ๋งŒ๋“ค๊ณ  ์‹ถ์€๋ฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๊ฐ์ด ์•ˆ์žกํžˆ๋„ค์šฉ ใ… ใ