์ผ๋ฐ์ ์ธ ๊ฒ์์์๋ ํ๋ ์ด์ด๋ฅผ ๋ฐฉํดํ๋ ์ (Enemy)๋ค์ด ์กด์ฌํฉ๋๋ค. ์ด๋ค์ ํ๋ ์ด์ด๋ฅผ ๊ณต๊ฒฉํ๊ฑฐ๋, ํ๋ ์ด์ด๊ฐ ๊ฒ์ ์งํ์ ์ํํ๊ฒ ์งํํ๋ ๊ฒ์ ๋ฐฉํดํ๋ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ๊ฒ์์์๋ ์ ๋ค์ด ์กด์ฌํ๋ฉฐ, ๊ฐ๊ฐ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง์ ๋ํด ์๊ธฐํ๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๋ ค๊ณ ํฉ๋๋ค.
1. AI Navigation ๊ธฐ๋ฅ์ ํตํ ์ ์ ๋งต ๋ด ์ด๋
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ค์ ๋งต ๋ด์์ ์ด๋ ๊ฐ๋ฅํ ์ง์ญ๋ง์ ๋์๋ค๋ ์ผ ํฉ๋๋ค. ์ด๋ ๋ถ๊ฐ๋ฅํ ์ง์ญ์ ๋ซ๊ณ ๊ฐ๋ค๋๊ฐ, ๋ชฉํ ์ง์ ์ ์์ ๋ฒฝ์ด ์๋๋ฐ๋ ์์ผ๋ก ๋์๊ฐ์ง ์๊ณ ๊ณ์ ๋ฒฝ์ ํฅํด ์ด๋ํ๋ค๋ฉด ๊ฒ์ ์งํ์ด ์ ๋ ๊ฒ์ ๋๋ค.
๋ํ, ์๊ธฐ๊ฐ ์ด๋ ์ค์ธ ๋ฐฉํฅ์ ๋ฐ๋ผ๋ณด๋ฉฐ ์ด๋ํด์ผ ํ๋ฉฐ, ๋ฐฉํฅ ์ ํ์ ์ํด ํ์ ์ ํ๋๋ฐ ์ด์คํ๊ฒ ํ์ ํ๋ ๊ฒ๋ ๊ฒ์์ ๋ํ ๋ชฐ์ ์ ๊นฐ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๋ด์ฉ๋ค์ ๊ตฌํํ๊ธฐ ์ํด, ๊ธฐ๋ณธ์ ์ผ๋ก ๋งต ๋ด์์ ์ด๋ค ๋ถ๋ถ์ ์ด๋ ๊ฐ๋ฅํ ๊ธธ์ด๊ณ , ์ด๋ค ๋ถ๋ถ์ ์๋๋ผ๋ ๊ฒ์ ์ AI์๊ฒ ์๋ ค์ค์ผ ํ๋๋ฐ, ๊ทธ๊ฑธ ์ง์ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก AI Navigation ๊ธฐ๋ฅ์ ๋๋ค.
๋งต ๋ด์ ์งํ ์กฐ๊ฑด์ ๋ํด ์๋ ค์ฃผ์๋ค๋ฉด, ์ AI์ ๋ํด ๋ค์ํ ์กฐ๊ฑด๋ค์ ์ธํ ํด์ค์ผ ํ์ต๋๋ค. ๋ชฉ์ ์ง ์ขํ, ํ์ ์๋, ์ด๋ ์๋ ๋ฑ๋ฑ์ ๋ด์ฉ๋ค์ ๋ง์ด์ฃ . ์ AI ์ค๋ธ์ ํธ์ NavMeshAgent ์ปดํฌ๋ํธ๋ฅผ ๋ถ์ฐฉํ๊ณ , ํ์ํ ๊ฐ๋ค์ ์ธํ ํด์ฃผ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ, ํ ๊ฐ์ง ๋ฌธ์ ์ ์ด ์์์ต๋๋ค. ํ์ ์ ๋ค ํ์ง ์์๋๋ฐ ์ด๋์ ํ๊ฑฐ๋, ํ์ ์๋๊ฐ ๋๋ฌด ๋๋ ค ๋ฐฉํฅ ์ ํ์ด ๋๋ฆฐ ๋ถ๋ถ์ด ๋ฌธ์ ๊ฐ ๋์์ต๋๋ค. ์ด ๋ถ๋ถ์ NavMeshAgent์ ์์ฒด ํ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ์ด์ํ์๋ ๊ฒ์ด๋ผ, ์์ฒด ํ์ ๊ธฐ๋ฅ์ ๋๊ณ ์ง์ ๊ตฌํํด์ผ ํ์ต๋๋ค. (๊ตฌ๊ธ๋ง์ ํด๋ณด๋ ์ข์ ์๋ฃ๊ฐ ์์๋๋ฐ, ๋งํฌ๋ฅผ ๋ชป ์ฐพ๊ฒ ๋ค์...)
agent.updateRotation = false;
๊ทธ๋ฆฌ๊ณ , ํ๋ ์ด์ด์๊ฒ์๋ ์ ์ฉํ์๋ ์ํ ๊ธฐ๊ณ(State Machine)์ ์ AI์๊ฒ๋ ๋๊ฐ์ด ๋ง๋ค์ด ์ ์ฉํด์ฃผ์์ต๋๋ค.
2. ์ํ ๊ธฐ๊ณ(State Machine) ์ฌ์ฌ์ฉ
1) ์๊ธฐ๊ฐ ์ด๋ ์ค์ธ ๋ฐฉํฅ์ ๋ฐ๋ผ๋ณด๊ฒ ํ๊ธฐ
์ฌ๋ฌ ์ํ์ ๋ํด ๋ค ์ค๋ช ํ๊ธฐ์๋ ๋ด์ฉ์ด ๋ง๊ณ , ๊ฐ์ฅ ํต์ฌ์ ์ธ ์ด๋์ ๋ํด์๋ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฆ, ์ด๋ ์ํ ํด๋์ค์ ๋ด์ฉ์ด์ง์. ์์์ ๋งํ๋, ์ AI๋ ์๊ธฐ๊ฐ ์ด๋ํ๋ ๋ฐฉํฅ์ ๋ฐ๋ผ๋ด์ผ ํ๋ค๋ผ๋ ๋ด์ฉ์ ๊ตฌํํ ๊ฒ๋ถํฐ ๋ณด๊ฒ ์ต๋๋ค.
desiredVelocity๋ ์ผ๋ฐ์ ์ธ velocity์ ๋ฌ๋ฆฌ ๋ฌผ๋ฆฌ์ ์ธ ์๋๋ฟ๋ง ์๋๋ผ, ์์ ์๋ ์ฅ์ ๋ฌผ ํํผ๊น์ง ๊ณ ๋ คํ ์๋๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฆ, desiredVelocity๊ฐ ๊ณง ์ AI๊ฐ ๋ฐ๋ผ๋ณผ ๋ฐฉํฅ์ด ๋๋ค๋ ๊ฒ์ด์ฃ .
๊ทธ ํ์๋ ์ด๋ ค์ด ๊ฒ ์์์ต๋๋ค. ๋ฐฉํฅ๋ง ๋ฐ๋ผ๋ณด๋ฉด ๋๋ y๊ฐ์ 0์ผ๋ก ํด์ฃผ๊ณ , ํด๋น ๋ฐฉํฅ์ผ๋ก ํ์ ์์ผ์ฃผ๋ฉด ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ NavMeshAgent Inspector ์ฐฝ์์ ํ์ ์๋(Angular Speed)์ ๊ฐ์(Acceleartion)์ 120์ผ๋ก ๊ฐ๊ฒ ํด์ฃผ๋ ํ์ ์๋๊ฐ ๋นจ๋ผ ๋ฐฉํฅ ์ ํ์ด ์์ฐ์ค๋ฝ๊ฒ ์ด๋ฃจ์ด์ง๋ ๊ฒ์ ๋ณผ ์ ์์์ต๋๋ค.
2) ์ AI ์ด๋ ๊ตฌํํ๊ธฐ
์ด๋ ์ํ์์๋ ํ๋ ์ด์ด๊ฐ ์ ์ ์์ผ ์ฌ๊ฑฐ๋ฆฌ ๋ด์ ๋ค์ด์๋์ง, ์ ์ ๊ณต๊ฒฉ ์ฌ๊ฑฐ๋ฆฌ ๋ด์ ๋์ฐฉํ์ฌ ๊ณต๊ฒฉ์ผ๋ก ์ ํํ ์ค๋น๊ฐ ๋์๋์ง, ๊ทธ๊ฒ ๋ชจ๋ ์๋๋ผ๋ฉด ์ ์ ํฅํด ์ด๋ํ ๊ฒ์ธ์ง ๋ฑ์ ๊ตฌํํด์ผ ํฉ๋๋ค.
OnUpdateState()๋ Update() ํจ์์ ๊ฐ์ด ๊ณ์ ๋งค ํ๋ ์๋ง๋ค ์คํ๋๋ ํจ์์ ๋๋ค. ์ ์ด ํ์ง๋์๋ค๋ฉด ์ ์ ๋ฐ๋ผ๋ณด๋ฉฐ ์ ์ ํฅํด ์ด๋ํ๊ฒ ๋๊ณ , ๊ณต๊ฒฉ ์ฌ๊ฑฐ๋ฆฌ ๋ด์ ๋์ฐฉํ์๋ค๋ฉด ๊ณต๊ฒฉ ๋ชจ์ ์ผ๋ก ์ ํ์ ํ๊ฒ ๋ฉ๋๋ค.
๋ฌผ๋ก ์ GIF ์์ ์ ์ ๊ฐ ์ AI์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ค ๊ตฌํํ๊ณ ๋ ํ ๋ นํํ ์์ ์ด๋ผ AI๊ฐ ๊ณต๊ฒฉ๋ ํ๊ธด ํฉ๋๋ค.
๊ทธ๊ฒ ์ค์ํ ๊ฒ์ด ์๋๋ผ, ๋ณด๋ฉด ์ฅ์ ๋ฌผ๋ ํผํด์ ํ๋ ์ด์ด๋ฅผ ๋ฐ๋ผ๋ค๋๊ณ , ์๊ธฐ๊ฐ ์ด๋ํ๋ ๋ฐฉํฅ์ ๋ฐ๋ผ๋ณด๋ฉด์ ์์ฐ์ค๋ฝ๊ฒ ๋ฐ๋ผ์ค๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ฐฉ์์ ํตํด ํ์ฅํด๋๊ฐ๋ฉฐ, ์ AI์ ๊ณต๊ฒฉ ์ํ, ์คํฌ์ด ์๋ค๋ฉด ์คํฌ ์ฌ์ฉ ์ํ ๋ฑ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
3) ๊ณต๊ฒฉ ์ํ ์ถ๊ฐํ๊ธฐ
AI Navigation๊ณผ ๊ด๋ จํ์ฌ ๊ฐ์ฅ ํต์ฌ์ ์ธ ๋ด์ฉ์ด ์ด๋(Move)์ด์์ผ๋ฏ๋ก, ํด๋น ๋ด์ฉ๋ง ๋ค๋ฃจ๊ณ ๋๋ด๋ ค๊ณ ํ๋๋ฐ, ๊ณต๊ฒฉ ๊ธฐ๋ฅ๊น์ง๋ง ๊ฐ์ด ๋ค๋ค๋ณด๋ ค๊ณ ํฉ๋๋ค.
๊ณต๊ฒฉ ๋ก์ง์ ๋งค ํ๋ ์๋ง๋ค ๋ค์์ ์ฒดํฌํ์ฌ ํ์ธํฉ๋๋ค.
- ์ ์ ํ๋ ์ด์ด๊ฐ ์์ ์ ์ ํจ ๊ณต๊ฒฉ ์ฌ๊ฑฐ๋ฆฌ ๋ด์ ๋ค์ด์๋์ง๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
- ๊ณต๊ฒฉ ์ค์ธ ์ํ๊ฐ ์๋๊ณ , ์ ์ด ์ฌ๊ฑฐ๋ฆฌ ๋ฐ์ ์๋ค๋ฉด ๋ค์ ์ด๋(Move) ์ํ๋ก ์ ํํฉ๋๋ค. - ์ ํจ ์ฌ๊ฑฐ๋ฆฌ ๋ด์ ๋ค์ด์๋ค๋ฉด, ๊ทธ ์๊ฐ์ ํ๋ ์ด์ด์ ์์น๋ฅผ ์ฒดํฌํฉ๋๋ค.
- ์ ๊ณผ ํ๋ ์ด์ด์์ ๊ฐ๋๋ฅผ ๊ณ์ฐํ๊ณ , ํ์ ํ์ด๋จธ๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ํจ์ ๋๋ค. - ์ ๊ณผ ํ๋ ์ด์ด์์ ๊ฐ๋๊ฐ ๊ฑฐ์ ์ฐจ์ด๊ฐ ์ ๋ ๋๊น์ง ํด๋น ๊ฐ๋๋ก ์ ์ด ํ์ ํฉ๋๋ค.
- ์ฐจ์ด๋ฅผ 0์ผ๋ก ์ค์ ํ๋ฉด ๊ทผ์ ๊ณต๊ฒฉ ์ ์ด ๋ก์ง์์ ๋ฌดํ ๋ฃจํ๋ฅผ ๋๋ฏ๋ก, 5๋ ์ ๋๋ก ์ฃผ์์ต๋๋ค.
- ํ์ด๋จธ๋ ํน์๋์ ๋ฒ๊ทธ๋ก ์ธํด, if๋ฌธ์์ ๋น ์ ธ๋์ค์ง ๋ชปํ ๊น๋ด ๋ฃ์ด๋ ์์ ์ฅ์น์ ๋๋ค. - ์ ๋ก์ง์ ๋ชจ๋ ํต๊ณผํ๋ค๋ฉด, ๊ณต๊ฒฉํ ์ ์๋ ์ํ์ด๋ฏ๋ก ๊ณต๊ฒฉ์ ํด์ค๋๋ค.
์ ์ด ์ฐ๋ ๋ฌด๊ธฐ ํ์ ์ ๋ฐ๋ผ ํ์ํ ๊ฒ๋ค์ ๋ง๋ค์ด์ฃผ๊ณ , ์ ๋๋ฉ์ด์ ์ ์ค์ ํ์์ต๋๋ค. ํ์ด(ํฌ์ฌ์ฒด)๋ฅผ ์ฌ์ฉํ๋ ๊ถ๋ณ ์ ์ ๊ฒฝ์ฐ, ํ์ด์ ์ค๋ธ์ ํธ ํ๋ง ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๊ฒ ๋ง๋ค์ด์คฌ์ต๋๋ค. ๋ฌด๊ธฐ ํ์ ์ ๋ค ๋ค๋ฅด์ง๋ง, ์์์ ์ค๋ช ํ ๋ก์ง์ ๋ค ๋์ผํ๊ฒ ์์ฉํฉ๋๋ค.
๋ณด๋ณ, ๊ถ๋ณ, ์ฅ๊ตฐ(์ฐฝ๋ณ)์ ๊ฒฝ์ฐ์๋ ์ด๋, ๊ณต๊ฒฉ, ์ฃฝ์ ์ธ ๊ฐ์ง ์ํ๋ฐ์ ์๊ธฐ์ ๋ฌด๊ธฐ์ ์ ๋๋ฉ์ด์ ๋ง ๊ต์ฒดํด์ฃผ๋ฉด ๋๊ธฐ์ ํธํฉ๋๋ค. ํ์ง๋ง, ์ง๊ด(๋ณด์ค๋ชน)์ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ ๋ชน๋ค๊ณผ ๋ค๋ฅธ ๋งค์ปค๋์ฆ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ฑฐ์ฐฝํ๊ฒ ๊ตฌํํ ๊ฑด ์์ง๋ง, ๋ค์ ๊ธ์์ ์ง๊ด(๋ณด์ค๋ชน)์ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง์ ๋ํด ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.