ํ‰์†Œ์ฒ˜๋Ÿผ ์ž์ฃผ ๋ณด๋Š” ํŠธ์œ„์น˜ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ๋ฐฉ์†ก์— ๋“ค์–ด๊ฐ€์„œ ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์—ˆ์Œ.


์–ด์ œ GetComponent์— ๋Œ€ํ•ด ๋‚ด๊ฐ€ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—†์œผ๋ฉด ๊ณ ์žฅ๋‚˜์ง€ ์•Š๊ณ  null๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.ย 

์ด๋ ‡๊ฒŒ ๋งํ–ˆ๋Š”๋ฐ ๊ฐ‘์ž๊ธฐ ๊ฐ€์นญ ์†Œ๊ธˆ๋ฉ์ด๊ฐ€ ์™€์„œย "์™œ GetComponent๋ฅผ ์“ฐ์„ธ์š”?" ํ•˜๊ณ  ๋ฌป๋Š” ๊ฑฐ์ž„.


๊ทธ๋ž˜์„œ ๋‚˜๋Š” OnColliderEnter2D์—์„œ ์ ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์“ด๋‹ค๊ณ  ๋งํ–ˆ์ง€.

๊ทผ๋ฐ ๋œฌ๊ธˆ์—†์ด "GetComponent ์ข‹์ง€์•Š์•„์š”. ์“ฐ์ง€ ๋งˆ์„ธ์š”" ์ด๋Ÿฌ๋Š”๊ฑฐ์ž„. ๋‚œ ๊ฐœ ๋œฌ๊ธˆ์—†์ด ๋ถ€์ • ๋‹นํ•ด์„œ "์•„์•—"ํ•˜๊ณ  ๋–จ์–ด์ ธ๋‚˜๊ฐ.

ํ˜น์‹œ ํŠธ๋ฆฌ๊ฑฐ ์•ˆ์“ฐ์„ธ์š”? ํ–ˆ๋Š”๋ฐ ์ฒ™์ˆ˜๋ฐ˜์‚ฌ๋กœ ๋‚ด๊ฐ€ ๊ทธ๋Ÿฐ๊ฑฐ ์—†๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ,ย .

๋ฐฉ์žฅ์€ "๋งž์•„์š” ์ €๋„ ์–ด๋””์„œ ๊ทธ๊ฑฐ ์„ฑ๋Šฅ์„ ๋–จ์–ดํŠธ๋ฆฐ๋‹ค๊ณ  ๋“ค์—ˆ์–ด์š”"ํ•˜๋‹ˆ๊นŒ ๋” ๋งํ•  ์ƒ๊ฐ์„ ๋ชปํ–ˆ์Œ

๋ฐฉ์žฅ์ด "๊ทธ๊ฑฐ ์žˆ์–ด์š”"ํ•˜๊ณ  ๋‚˜๋„ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ๊นŒ collider์— IsTrigger ์ฒดํฌํ•œ๊ฑฐ ๋งํ•˜๋Š” ๊ฑฐ๊ตฌ๋‚˜ ๊นจ๋‹ณ์Œ. ๋‚œ ๋ฌดํ„ฑ๋Œ€๊ณ  ๋ถ€์ •ํ•ด์„œ ํ•  ๋ง์ด ์—†์–ด์ง„๊ฑฐ์ž„

๊ทธ ๋‹ค์Œ ์†Œ๊ธˆ์ด "๋Œ€์‹  [SerializeField]์“ฐ๋Š”๊ฒŒ ์ข‹์•„์š”."๋ผ ํ•˜๋”๋ผ. ํ•œ 5๋ถ„์ฏค ๊ณฑ์”น์–ด๋ณด๋‹ค ํ™”๊ฐ€ ๋‚˜๋Š”๊ฑฐ์ž„. ์™œ ์—ฌ๊ธฐ์„œ ๊ทธ๋Ÿฐ ์ด์•ผ๊ธฐ๊ฐ€ ๋‚˜์˜ค์ง€?

๊ทธ๋ž˜๋„ ์ฐธ์•˜์Œ. ๊ทธ๋ž˜, ๊ฐ€๋งŒํžˆ ์žˆ์œผ๋ฉด ์Ÿค๊ฐ€ ์ข€๋” ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ฑธ ํ’€์–ด์ฃผ๊ฒ ์ง€, ๊ทธ๋Ÿผ ๋‚ด๊ฐ€ ๋งํ•ด์„œ ๊ณฑ์ฐฝ๋‚˜๋Š” ๊ฒƒ ๋ณด๋‹จ ๋ฐฉ์žฅํ•œํ…Œ ๋” ์ด๋กญ๊ฒ ์ง€ ์ƒ๊ฐํ•˜๊ณ .


๊ทธ๋Ÿฌ๋ฉด์„œ ์ถ”์ฒœํ•œ ๊ฒƒ์ด FSM์ด๊ณ ,ย ๋ฐฉ์žฅ์ด ์ด๊ฑฐ ์ข‹์•„ ๋ณด์ธ๋‹ค๋ฉด์„œ ์ง€๊ธˆ๊นŒ์ง€ ์œ ๋‹ˆํ‹ฐ ๊ณตํ™ˆ์— ํŠœํ† ๋ฆฌ์–ผ ๋ณด๊ณ  ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์Œ.

ํ•˜๋ฃจ ์ง€๋‚œ ์•„๊นŒ "์ด๊ฑฐ ๋‚˜์ค‘์— ์ œ๋„คํ‹ฑ์“ฐ๋ฉด ๋” ๋ฒ”์šฉ์„ฑ์ด ๋†’์•„์งˆ๊ฑฐ์—์š”"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฑธ ๋ณด๋‹ˆ๊นŒ ๋‹ค์‹œ ๊ณ ๊ตฌ๋งˆ 100๊ฐœ ์”น์–ด๋จน์€ ๊ฒƒ ๊ฐ™์Œ.ย 

๊ฒฐ๊ตญ GetComponent ๋Œ€์‹  MonoBehavior ์•ˆ ์“ฐ๊ณ  ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋ ค๋Š” ๊ฒƒ์ด์˜€์Œ.

๊ทผ๋ฐ ์ด๊ฒŒ ๋‚˜ํ•œํ…Œ ์ƒˆ๋กœ์šด ๊ฒƒ๋„ ์•„๋‹ ๋ฟ๋”๋Ÿฌ ๋‚ด๊ฐ€ ์“ฐ๋Š” ๋ฐฉ์‹๊ณผ ๋‹ค๋ฆ„.

์†Œ๊ธˆ์ด ๋ถ€์ •ํ•œ ๋‚ด๊ฐ€ ์“ฐ๋Š” FSM ๋ฐฉ์‹์€, ์ƒํƒœ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ BehaviorState์ด๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ๊ฐ์ฒด๋กœ ๋‘๊ณ  ํ”Œ๋ž˜์ด์–ด ์ปดํฌ๋„ŒํŠธ์— ๋„ฃ์€ ๋‹ค์Œ, ์ฃผ์ถ•์ด๋˜๋Š” PlayerMove์—์„œ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— GetComponents<BehaviorState>()๋กœ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์™€์„œ, PlayerMove์—์„œ ๊ฐ ์ƒํƒœ์— ์žˆ๋Š” Activate()๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๋ฐฉ์‹์ด์˜€์Œ.ย 


๊ฐ ์ƒํƒœ๋Š” String์œผ๋กœ ๋œ ID๊ฐ€ ์žˆ์–ด์„œ ์ƒํƒœ ๋ณ€ํ™˜์„ ํ•  ๋•Œ, ๊ฑธ์–ด๋‘” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ID๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์ƒํƒœ์˜ bool PreCondition()์„ ํ˜ธ์ถœํ•ด ์„ธ๋ถ€์ ์œผ๋กœ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋Š”์ง€(์บ”์Šฌ์ด ๊ฐ€๋Šฅํ•œ์ง€, ๋•…์— ๋ถ™์–ด์ž‡๋Š”์ง€, ์†๋„๊ฐ€ ์–ด๋– ํ•œ์ง€ ๋“ฑ๋“ฑ)์„ ํ™•์ธํ•˜๊ณ  ๋งŒ์กฑํ•˜๋ฉด ํ˜„์ œ ์ƒํƒœ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ”๊พธ๋Š” ๊ทธ๋Ÿฐ ๋ฐฉ์‹์ด์˜€์Œ.


๋‚ด๊ฐ€ ์ €๋Ÿฐ ํŠœํ† ๋ฆฌ์–ผ๋„ ๋ชฐ๋ผ์„œ ํ˜ผ์ž ๋™๋™๋Œ€๋ฉด์„œ ์—ฌ๊ธฐ์— ์ง„์งœ ์‹œ๊ฐ„์„ ๋งŽ์ด ์ผ์Œ.

์˜ˆ์ „์— FSM์— ๋Œ€ํ•ด ์ผ๋˜ ๊ธ€์„ ๋ณด๋ฉด ๊ฐ ์ƒํƒœ๋ฅผ ๋ฉ”์„œ๋“œ๋ฅผ ์จ์„œ ๊ตฌํ˜„ํ•˜๊ณ  ํ˜„์žฌย ์ƒํƒœ๋ฅผ Delegate๋กœ ๊ฐ€๋ฅดํ‚ค๋Š” ๋ฐฉ์‹์„ ์ด์šฉํ–ˆ๋Š”๋ฐ,ย 

๋ฉ”์„œ๋“œ๋กœ ํ•˜์ž๋‹ˆ ํด๋ž˜์Šค ํ•˜๋‚˜์— ์“ธ ๊ฒƒ์ด ๋„ˆ๋ฌด ๋ฐฉ๋Œ€ํ•ด์ ธ์„œ,ย ๊ฐ ์ƒํƒœ๋กœ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์ž~ ํ•ด์„œย ์ž๋ฃŒ๋กœ UnityAsset์˜ Corgi์—”์ง„์„ ์‚ฌ์„œ ๋ณด๊ณ ,ย ์ง€๊ธˆ์˜ ๋ฐฉ์‹์ด ๋  ๋•Œ๊นŒ์ง€ ๊ฑฐ์˜ ๋ฐ˜๋…„์ด ๊ฑธ๋ ธ์Œ.


๊ทผ๋ฐ ๊ทธ๊ฑธ ์ดˆ๋ฉด์— ๋ถ€์ • ๋‹นํ•˜๊ณ , ๋งค๋ฒˆ ๋ง ๊ฑธ๋˜ ์ŠคํŠธ๋ฆฌ๋จธ๋„ NTR ๋‹นํ•˜๊ณ , ๊ฐœ์กฐ ๋‹นํ•˜๊ณ  ์žˆ๋Š”ย ๋ฐฉํ–ฅ๊นŒ์ง€ ๋‹ค๋ฅด๊ณ , 3๋ฐ•์ž๋กœ ๋ฏธ์น˜๊ฒ ๋Š”๊ฑฐ์ž„.

์ง„์งœ ๊นฝํŒ์น˜๊ณ  ์‹ถ์€๋ฐ ๊ทธ๋Ÿฌ๋ฉด ์‹ ์„ธ์ง„ ๋ฐฉ์žฅ์ด ์†ํ•ด๋ณผ ๊ฒƒ ๊ฐ™๊ณ ,ย 

์ด๋ ‡๊ฒŒ ์นœํ™”๋ ฅ 1๋„ ์—†์ด ์œ ๋‹ˆํ‹ฐ ํ›ˆ์ˆ˜๋งŒ ๋‘๋˜ ๋‚ด ํฌ์ง€์…˜์€ ์–ธ์  ๊ฐ„ ๋บ๊ธธ ๊ฒƒ ๊ฐ™๋‹ค ์ƒ๊ฐ๋งŒ ํ–ˆ์ง€ ๋ง‰์ƒ ๋บ๊ธฐ๋‹ˆ ๋‹ต๋‹ตํ•˜๊ณ ,ย 

์ €๋ฒˆ์ฃผ์— ใ…Žใ…‡ ๋ถ€์›์žฅ์ด ์ƒ๋‹ดํ•˜๋ฉด์„œ "DirectX๋Š” ์†ํ•ด๋ณด๋Š” ๊ฒƒ ๊ฐ™๋‹ค๊ณ ์š”? ๋ฌผ๋ก  ํ˜ผ์žํ•˜๋ฉด ์œ ๋‹ˆํ‹ฐ๊ฐ€ ์ข‹๊ฒ ์ง€๋งŒ ๋„ˆ๋ฌด ์† ๋นˆ ๊ฐ•์ •์ด์—์š”. ๊นŠ์ด๊ฐ€ ์—†์–ด์š”" ํ•˜๋˜ ๋ง์ด ์ƒ๊ฐ๋‚˜๊ณ ,

์•ผ๊ฒœ ์‹œ์žฅ์ด ๋กœ์šฐ์ธํ’‹ ํ•˜์ด์•„์›ƒํ’‹์˜ย ๋ธ”๋ฃจ์˜ค์…˜์ด๋ผ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ƒ๋Œ€์ ์œผ๋กœ ์‹ค๋ ฅ์ž๊ฐ€ ์Ÿ์Ÿํ•˜๊ณ , ๋ฒ•์ ์œผ๋กœ ๋ณดํ˜ธ๋„ ๋ชป ๋ฐ›๊ณ ..

์• ์‹œ๋‹น์ดˆ ๋‚œ ์œ ๋‹ˆํ‹ฐ ๊ณต๋ถ€์— 2๋…„, ์ž‘ํ’ˆ ๋งค์ง„์— 1๋…„์„ ์†Œ๋น„ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ถœ์‹œ๋Š” ์ปค๋…• ์‹œ์Šคํ…œ ์™„์„ฑ๋„ ๋ชปํ–ˆ๊ณ ..



์ด์ œ ๋‚ด๊ฐ€ ์™œ ์—ฌ๊ธฐ์— ๊ธ€์“ฐ๋Ÿฌ ์™”๋Š”์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค.