[UE5] ๐Ÿค– ํ–‰๋™ํŠธ๋ฆฌ๋กœ AI ์  ๋งŒ๋“ค๊ธฐ (4)

Singery00ยท2024๋…„ 4์›” 18์ผ
0

UE5 Blueprint

๋ชฉ๋ก ๋ณด๊ธฐ
20/29
post-thumbnail
post-custom-banner

๊ฐœ์š”

๐Ÿค– Behavior Tree๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง์ ‘ AI๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์ž.

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” AI์—๊ฒŒ ํŒจํŠธ๋กค ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์„ค๋ช…์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด์„œ
ํ–‰๋™ํŠธ๋ฆฌ (Behavior Tree)๋Š” ์•ž์œผ๋กœ BT๋กœ,
๋ธ”๋ž™๋ณด๋“œ (Black Board)๋Š” ์•ž์œผ๋กœ BB๋กœ,
AI Controller๋Š” AIC๋ผ๊ณ  ๋ถ€๋ฅผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

Ali Elzoheiry๋‹˜์˜ Smart AI ๊ฐ•์˜ ์˜์ƒ์„ ๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์‹œ๋ฆฌ์ฆˆ์˜ ์–‘์ด ๋งŽ์ง€๋งŒ ์ •๋ฆฌ๊ฐ€ ์•„์ฃผ ์ž˜ ๋˜์–ด ์žˆ์œผ๋‹ˆ ํ•œ๋ฒˆ์”ฉ ์‹œ์ฒญ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Ali Elzoheiry ์œ ํˆฌ๋ธŒ


๋ณธ๋ก 


๐Ÿ›ฃ๏ธ Spline Route

AI๊ฐ€ ํŠน์ • ํฌ์ธํŠธ๋ฅผ ๋”ฐ๋ผ์„œ ์›€์ง์ด๊ธฐ ์œ„ํ•ด์„œ Spline Route๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ผ์šฐํŠธ ์ƒ์„ฑ

Blueprint Class๋ฅผ Acotr๋กœ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.
์ด๋ฆ„์€ Patrol Route๋ผ๊ณ  ์ด๋ฆ„ ์ง€์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

Spline ์ถ”๊ฐ€

์ปดํฌ๋„ŒํŠธ ์ฐฝ์—์„œ Add๋ฅผ ๋ˆ„๋ฅด๊ณ  Spline์„ ๊ฒ€์ƒ‰ํ•ด์„œ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

Spline ๋ฐฐ์น˜

์›”๋“œ์— BP_PatrolRoute ์•กํ„ฐ๋ฅผ ๋ฐฐ์น˜ํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ๊ฐ ํฐ์ ์„ ์žก๊ณ  Alt๋ฅผ ๋ˆ„๋ฅธ ์ƒํƒœ๋กœ ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด ์›€์ง์ผ ๊ฒฝ๋กœ๋ฅผ ์ƒ์„ฑํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ๋งŒ๋“ค์–ด ์คฌ์Šต๋‹ˆ๋‹ค.

๋ณ€์ˆ˜ ์ถ”๊ฐ€

๊ทธ๋ฆฌ๊ณ  Integer ํƒ€์ž…์œผ๋กœ PatrolIndex์™€ Direction์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

Direction์€ ๊ฐ’ ๋ฒ”์œ„๋ฅผ -1 ~ 1๋กœ ์„ค์ •ํ•˜์‹œ๊ณ  ๋””ํดํŠธ๋ฅผ 1๋กœ ํ•ด์ฃผ์„ธ์š”.

๋ผ์šฐํŠธ ๋กœ์ง ์ž‘์„ฑ

AI๊ฐ€ ์–ด๋–ค ํฌ์ธํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์›€์ง์ผ์ง€์— ๋Œ€ํ•ด์„œ Index๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ๋กœ์ง์ž…๋‹ˆ๋‹ค.

Partrol Index๋ฅผ ๊ธฐ์ค€์œผ๋กœ 1์นธ์”ฉ ์ „์ง„ํ•˜๋Š” ๋กœ์ง์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Spline์˜ ๋งˆ์ง€๋ง‰ ์ง€์ ์— ๋„์ฐฉํ–ˆ์„ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๋กœ์ง์„ ์ž‘์„ฑํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

Branch๋กœ ์ด์–ด ์ฃผ์„ธ์š”.

๋งˆ์ง€๋ง‰ ์ง€์ ์— ๋„์ฐฉํ–ˆ์„ ๋•Œ Direction์„ -1๋กœ ์„ธํŒ…ํ•ด์ฃผ์„ธ์š”.
๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ Patrol Index๊ฐ€ 0์ธ ๊ฒฝ์šฐ์—๋Š” 1๋กœ ์„ธํŒ…ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ„ ๋กœ์ง์€ ์•ž์˜ Branch์˜ False์— ์ด์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ „์ฒด ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Spline Point ์ขŒํ‘œ ๋ฐ˜ํ™˜ ํ•จ์ˆ˜ ์ž‘์„ฑ

Get Spline Point As World Position์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

์šฐ๋ฆฌ๋Š” Spline Point์˜ World Location์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ์–ด์•ผ AI๊ฐ€ ํ•ด๋‹น ์ขŒํ‘œ๋กœ ์›€์ง์ด๋ผ๋Š” ๋ช…๋ น์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Output์—์„œ Vector๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” Location ๋ฆฌํ„ด๊ฐ’์„ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  Spline์„ Get์œผ๋กœ ๊ฐ€์ ธ์˜ค์‹œ๊ณ , Get Location at Spline Point ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
Point Index์—๋Š” Patrol Index๋ฅผ ๋„ฃ์–ด ์ฃผ์„ธ์š”.
Coordinate Space๋Š” World๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์„ธ์š”.

์šฐ๋ฆฌ๋Š” Patrol Index๋ฅผ ํ†ตํ•ด์„œ ๋ช‡ ๋ฒˆ์งธ ํฌ์ธํŠธ๋ฅผ ์ง€๋‚˜๊ฐ€๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด Index๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ์ง€์ ์˜ Spline Point ์ขŒํ‘œ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๊ฒ๋‹ˆ๋‹ค.

โ—์ปดํŒŒ์ผ ์ €์žฅโ—ํ•ด์ฃผ์„ธ์š”.

Blueprint Interface

์ €ํฌ๋Š” AI๊ฐ€ Patrol Route๋ฅผ ๊ฐ€์ง€๊ธธ ์›ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ ์‹ค์ œ ๊ฒŒ์ž„์—์„  ์—ฌ๋Ÿฌ Patrol Route๊ฐ€ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ AI๋งˆ๋‹ค ๋‹ค๋ฅธ Patrol Route๊ฐ€ ํ• ๋‹น๋˜๊ฒ ์ฃ ?

์ด๋•Œ ๋ชจ๋“  AI๋งˆ๋‹ค ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด์„œ ์–ด๋–ค Patrol Route๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ ค๋ฉด ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…์ด ๋ ๊ฒ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ Blueprint Interface๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽธ์˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์ธํ„ฐํŽ˜์ด์Šค ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณตํ†ต๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ํŠน์ • ํ•จ์ˆ˜์„ฑ์„ ๋ชจ๋‘ ๊ณต์œ ํ•˜๋Š” ๋‹ค์ˆ˜์˜ ์ƒ์ดํ•œ ์˜ค๋ธŒ์ ํŠธ ์œ ํ˜•๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
BPI ๊ณต์‹ ๋ฌธ์„œ

์ดํ•˜๋ถ€ํ„ฐ BPI๋ผ๊ณ  ์ค„์—ฌ์„œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

BPI ์ƒ์„ฑ

์šฐํด๋ฆญ - Blueprint - Blueprint Interface๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  BPI_Enemy๋ผ๊ณ  ์ง€์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

BPI ์ž‘์„ฑ

๋“ค์–ด๊ฐ€๋ฉด ํœ‘ํ•œ ํ™”๋ฉด์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ Add๋ฅผ ๋ˆŒ๋Ÿฌ GetPatrolRoute ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํด๋ฆญํ•ด์„œ Output์„ ์ถ”๊ฐ€ ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.
์‚ฌ์ง„์—์„  ์ถ”๊ฐ€ ๋ฒ„ํŠผ์ด ๊ฐ€๋ ค์กŒ์ง€๋งŒ ์ถ”๊ฐ€๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”.

PatrolRoute๋ผ๊ณ  ์ด๋ฆ„ ์ง€์–ด ์ฃผ์‹œ๊ณ , BP Patrol Route๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ Object Reference๋ฅผ ํƒ€์ž…์œผ๋กœ ๋„ฃ์–ด ์ฃผ์„ธ์š”.

๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

โ—์ปดํŒŒ์ผ ์ €์žฅโ—ํ•ด์ฃผ์„ธ์š”.

๐ŸŽ› BP_Enemy ์ˆ˜์ •

BP_Enemy๋กœ ์ด๋™ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

BPI ์ถ”๊ฐ€

Class Settings๋ฅผ ์„ ํƒํ•ด bpi๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ, BPI Enemy AI๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

Interface ํ™•์ธ

๊ทธ๋Ÿฌ๋ฉด ์ขŒ์ธก My Bluieprint ํƒญ์˜ INTERFACES ์„น์…˜์„ ๋ณด๋ฉด Get Patrol Route๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ถ”ํ›„ ์‹ค์Šตํ•  ์ด๋™ ์†๋„ ๋ณ€๊ฒฝ ํ•จ์ˆ˜๊ฐ€ ์žˆ์–ด์„œ 2๊ฐœ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Patrol Route ๋ณ€์ˆ˜ ์ƒ์„ฑ

๊ทธ๋ฆฌ๊ณ  PatrolRoute๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.
๊ทธ๋ฆฌ๊ณ  BP Patrol Route๋ฅผ ํƒ€์ž…์œผ๋กœ ๋„ฃ์–ด ์ฃผ์‹œ๊ณ , public์œผ๋กœ ํ•ด์ฃผ์„ธ์š”.
๋ˆˆ ๋ชจ์–‘์ด ๋œฌ ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Get Patrol Route ์™„์„ฑ

Interface์˜ Get Patrol Route๋ฅผ ๋”๋ธ”ํด๋ฆญํ•˜์‹œ๋ฉด ํ•จ์ˆ˜ ์ž‘์„ฑ ์ฐฝ์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

๊ฑฐ๊ธฐ์„œ ๋ฐ˜ํ™˜๊ฐ’์— ๋ฐฉ๊ธˆ ์ƒ์„ฑํ•œ PatrolRoute๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด ์ฃผ์„ธ์š”.

โ—์ปดํŒŒ์ผ ์ €์žฅโ—ํ•ด์ฃผ์„ธ์š”.

๐Ÿ“‹ Move Along Patrol Route

์ด์ œ BT์—์„œ ํŒจํŠธ๋กค์„ ์œ„ํ•œ ์ปค์Šคํ…€ ํƒœ์Šคํฌ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํƒœ์Šคํฌ ์ƒ์„ฑ

BTT_MoveAlongPatrolRoute๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

ํƒœ์Šคํฌ ์ž‘์„ฑ

Execute ์‹คํ–‰ ๋…ธ๋“œ ์Œ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  Controlled Pawn์—์„œ ๋Œ์–ด์„œ Get Patrol Route ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  Is Valid ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ Patrol Route๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋กœ์ง์ด ์‹คํ–‰๋˜๊ฒŒ ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

Is Valid๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์žˆ์œผ์‹ค ํ…๋ฐ ์—ฌ๊ธฐ์„œ๋Š” ํ•˜์–€์ƒ‰ ๋ฌผ์Œํ‘œ๊ฐ€ ์žˆ๋Š”๊ฑธ ์„ ํƒํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  Patrol Route๋ฅผ ๋Œ์–ด์„œ Get Spline Point as World Position ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

Is Valid์ธ ๊ฒฝ์šฐ์™€ ํ๋ฆ„ ์—ฐ๊ฒฐํ•ด์ฃผ์„ธ์š”.

AI MoveTo๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๊ฐ’์„ ์ด์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Pawn๊ฐ’์„ ์ด์–ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ์ด๋™์„ ํ–ˆ์œผ๋‹ˆ ๋‹ค์Œ ์ด๋™ ์ขŒํ‘œ๋กœ ๊ณ„์‚ฐ์„ ํ•ด์ฃผ์–ด์•ผ๊ฒ ์ฃ ?
์šฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑํ•œ Increment Patrol Route ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์ค์‹œ๋‹ค.

์„ฑ๊ณต, ์‹คํŒจ ๋ชจ๋“  ๊ฒฝ์šฐ ํ๋ฆ„ ์ด์–ด ์ฃผ์‹œ๊ณ , Finish Execute์™€ ์—ฐ๊ฒฐํ•˜๋ฉด ๋์ž…๋‹ˆ๋‹ค.

โ—์ปดํŒŒ์ผ ์ €์žฅโ—ํ•ด์ฃผ์„ธ์š”.

Decorator

์ด์ œ AI๊ฐ€ Patrol Route๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” Decorator๋ฅผ ๋งŒ๋“ค์–ด ์ค์‹œ๋‹ค.

Decorator ์ƒ์„ฑ

๋Š˜ ํ•˜๋˜๋Œ€๋กœ BlueprintBase๋กœ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”.

BTD_HasPatrolRoute๋กœ ์ด๋ฆ„ ์ง€์–ด ์ฃผ์„ธ์š”.

Decorator ์ž‘์„ฑ

์ปจ๋””์…˜ ์ฒดํฌ๋กœ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•ด์ฃผ์‹œ๊ณ 

Get Patrol Route๋ฅผ ๋…ธ๋“œ ์ถ”๊ฐ€ํ•ด์„œ Is Valid์ธ ๊ฒฝ์šฐ์˜ bool๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ Is Valid๋Š” ์ดˆ๋ก์ƒ‰ f๋กœ ์„ ํƒํ•ด์ฃผ์„ธ์š”.

โ—์ปดํŒŒ์ผ ์ €์žฅโ—ํ•ด์ฃผ์„ธ์š”.

๐ŸŒณ BT ์ˆ˜์ •

์ž„์‹œ๋กœ ๋‹ค๋ฅธ ์—ฐ๊ฒฐ์„ ๋Š์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์‹œํ€€์Šค ์ถ”๊ฐ€
  2. ์‹œํ€€์Šค ์šฐํด๋ฆญ - HasPatrolRoute ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ถ”๊ฐ€
  3. ํ•˜์œ„์— BTT Move ALong Patrol Route ์ถ”๊ฐ€

ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์œ„ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ์„œ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

Patrol Route ํ• ๋‹น

์•กํ„ฐ์— ๋ฐฐ์น˜๋œ BP_Enemy๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”.
๊ทธ๋ฆฌ๊ณ  Details์—์„œ Patrol์ด๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•ด์ฃผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์น˜ํ•œ Patrol Route๋ฅผ ํ• ๋‹นํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋งŒ์•ฝ Patrol Route ๋ณ€์ˆ˜๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค๋ฉด BP_Enemy์˜ Patrol Route๋ณ€์ˆ˜์˜ ๋ˆˆ๋ชจ์–‘์„ ๋œจ๊ฒŒ ๋งŒ๋“ค์–ด์„œ public์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์„ธ์š”.
  2. ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” Patrol Route๊ฐ€ ์—†๋‹ค๋ฉด BP_PatrolRoute๋ฅผ ๋ ˆ๋ฒจ์— ๋ฐฐ์น˜ํ•ด์ฃผ์„ธ์š”.

์ €๋Š” ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋ฐฐ์น˜ ๋˜์–ด ์žˆ๊ตฌ์š”.

ํ”Œ๋ ˆ์ด ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ œ๋ฐœ ๋˜๋ผ ๐Ÿ™

๋‹คํ–‰์ž…๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

ํŒจํŠธ๋กค ๊ธฐ๋Šฅ์„ ๋ฌด์‚ฌํžˆ ๊ตฌํ˜„์„ ํ•ด์„œ ๋‹คํ–‰์ž…๋‹ˆ๋‹ค.

Behavior Tree๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์—ฌ๊ธฐ์ €๊ธฐ ์™”๋‹ค ๊ฐ”๋‹ค ํ•ด์„œ ๋งŽ์ด ๋ณต์žกํ•˜๊ณ  ํ–‡๊ฐˆ๋ฆฌ์‹ค ๊ฒ๋‹ˆ๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŒ…์—๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€์™€ Enum์„ ์‚ฌ์šฉํ•œ ์ƒํƒœ๊ตฌ๋ถ„์œผ๋กœ BT๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

profile
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€