๐ค ์ํ ๋จธ์ ์ผ๋ก ์ AI ๊ตฌํ – ๊ฒ์ ์บ๋ฆญํฐ ๋๋ํ๊ฒ ๋ง๋ค๊ธฐ
๊ฒ์์์ ์ ์บ๋ฆญํฐ๊ฐ ๋จ์ํ ์๋ค ๊ฐ๋ค๋ง ํ๋ ๊ฒ ์๋๋ผ, ํ๋ ์ด์ด๋ฅผ ์ซ๊ฑฐ๋ ๊ณต๊ฒฉํ๊ณ ๋๋ง์น๋ ํ๋์ ๋ณด์ฌ์ฃผ๋ฉด ํจ์ฌ ์์ฐ์ค๋ฝ๋ค.
์ด๋ฐ ํ๋ ํจํด์ ๊ตฌํํ ๋ **์ํ ๋จธ์ (State Machine)**์ด ํต์ฌ์ด๋ค.
1. ์ํ ๋จธ์ (State Machine) ๊ฐ๋
-
๊ฐ์ฒด๊ฐ ๊ฐ์ง ์ ์๋ ์ํ(State)์ ์ ํ(Transition) ๊ตฌ์กฐ
-
์ํ๋ง๋ค ํ๋์ ์ ์ํ๊ณ , ์กฐ๊ฑด์ด ๋๋ฉด ๋ค๋ฅธ ์ํ๋ก ์ด๋
-
์์: ์ ์บ๋ฆญํฐ
-
Idle (๋๊ธฐ)
-
Patrol (์์ฐฐ)
-
Chase (์ถ๊ฒฉ)
-
Attack (๊ณต๊ฒฉ)
-
2. ์ํ ๋จธ์ ๊ทธ๋ฆผ
-
Idle → Patrol: ์ผ์ ์๊ฐ ํ
-
Patrol → Chase: ํ๋ ์ด์ด ๋ฐ๊ฒฌ ์
-
Chase → Attack: ๊ณต๊ฒฉ ๋ฒ์ ์ง์ ์
-
Attack → Idle/Patrol: ํ๋ ์ด์ด ๋ฉ์ด์ง๋ฉด
3. Unity C# ์์
4. ์ํ ๋จธ์ ํ์ฉ ํ
-
ํ๋๋ง๋ค ์ฝ๋๋ฅผ ๋๋๋ฉด ๊ฐ๋ ์ฑ↑ ์ ์ง๋ณด์↑
-
์ ํ ์กฐ๊ฑด(Trigger)์ ๋ช ํํ → AI ํ๋ ์์ธก ๊ฐ๋ฅ
-
๋ณต์กํ AI๋ ๊ณ์ธต์ ์ํ ๋จธ์ (Hierarchical State Machine) ์ ์ฉ ๊ฐ๋ฅ
5. ๋ง๋ฌด๋ฆฌ
์ํ ๋จธ์ ์ ํ์ฉํ๋ฉด,
-
๋จ์ ์ด๋ AI → ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํ๋
-
ํ๋ ์ด์ด ๊ฒฝํ ํฅ์
-
๊ฒ์ ๋์ด๋ ์กฐ์ ์ฉ์ด
๋ค์ ๊ธ์์๋ Object Pooling์ผ๋ก ๊ฒ์ ์ต์ ํ๋ฅผ ๋ค๋ค, ๋ค์ ์ ๊ณผ ํฌ์ฌ์ฒด๊ฐ ์์ ๋ ์ฑ๋ฅ์ ์์ ์ ์ผ๋ก ์ ์งํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ๋ค.
๋๊ธ
๋๊ธ ์ฐ๊ธฐ