์ผ๋ฐ ๊ณต๊ฒฉ์ผ๋๋ ์ด๋ ๋ถ๊ฐ
์ฐจ์ง ์คํฌ์ด๋ ์ฆ๋ฐ ์คํฌ์ผ๋๋ ์ด๋๋ถ๊ฐย
๋์๋ธ๋ก์ ํ ์๋๊ฐ์ ์คํฌ์ผ๋๋ ์ด๋ ๊ฐ๋ฅ
์ด๋ฐ์์ผ๋ก ๊ฐ ์คํฌ์ด๋ ๊ณต๊ฒฉ์ ์ข ๋ฅ์ ๋ฐ๋ผ์ ์ด๋๊ฐ๋ฅํ๊ณ ๋ถ๊ฐ๋ฅํ๊ณ ๋ฅผ ์ค์ ํด์ฃผ๊ณ ์ถ์๋ฐ
FSM์ฐ๋ฉด ์ด๋๋ฐ๋ก ๊ณต๊ฒฉ๋ฐ๋ก ์คํฌ๋ฐ๋ก , ํ๋์ฉ ์ฒ๋ฆฌํด์ฃผ๋๊ฑฐ๋ผ ํ๋ค๊บผ๊ฐ์๋ฐย
์ด๋ด๋๋ ์ด๋ํ๋๊ฑด ์ํ๊ฐ ์๋๋ผ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณ์ ์ฒดํฌํ๊ฒ ํ๊ณ ๊ณต๊ฒฉ๊ณผ ์คํฌ๋ค์ ๊ธฐ์กด ์ํ๋ง๋ฅ ๋๋ ์ฃผ๋๊ฒ ์ต์ ์ธ???ย ย
์๋๋ฉด ์ด๋ด๋ ๋ฐ๋ก ์ฐ๋ ๋์์ธํจํด์ด ๋ฐ๋ก ์์???
์๋จ์๋ ํ๋์ฝ๋ฉ์ด๋ค ํ๋์ฝ๋ฉ์ ๋ญ๋ ๊ฐ๋ฅํ๋ค - dc App
FSM์ด ์๋๋ผ ๋์์ ๊ด๋ฆฌํด์ผํ๋ค.
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๊ทธ๋ฅ fsm์์ฐ๋๊ฒ ๋ต์ธ๊ฐ...?
๊ธฐ๋ณธ์ ์ผ๋ก FSM์ฐ๋ฉด ์ด๋์ํ๋ ์ด๋๋ง, ์คํฌ ์ํ์ผ๋๋ ์คํฌ๋ง, ๊ณต๊ฒฉ์ผ๋๋ ๊ณต๊ฒฉ, ์ ํ์ผ๋๋ ์ ํ ์ด๋ฐ์ ํ ์ํ์ฉ ์คํ๋๋๋ฐ ์คํฌ์ ์ด๋ ๊ฐ๋ฅ ๋ถ๊ฐ๋ฅ ๋ฃ์ด์ ํ๋ณํ ๋ ค๋ฉด ํ ์คํฌ์ผ๋๋ ์ํ์ผ๋ ๋๊ฐ์ ์ํ๊ฐ ๋๋ฉด.....๋๋๊ตฌ๋!
์ด์ฐ ์ ์ฐ ๊ฐ ์ก์๋ฏ ๋ต๋ณ ๊ฐ์ฌ
FSM ์ชฝ์ ์ด๋๋ถ๊ฐ ๊ฐ์๊ฑฐ ๋ฃ์ผ๋ฉด ๋ฆฌ์ผ ํฌ ์์์ด๋ค. ๋ ๋ณต์กํจ. ์ด๋ ๊ฐ๋ฅํ๊ฐ ๋ถ๊ฐ๋ฅํ๊ฐ๋ ์คํฌ์ชฝ์ผ๋ก ๋ชฐ์๋ฃ๊ณ , FSM์ ์ ๋ง ํฐ ์ํ๋ง ์กฐ์ํ๊ฒ ํด์ ๊ฐ๋จํํ๋๊ฑธ ์ถ์ฒ
๊ทธ๋ผ ์ด๋ํ๋๊ฑด fsm๊ณผ ์์ธ๋ก ์ฒ๋ฆฌํ๊ณ ์ฐจ์ง์ํ, ํค๋ค์ด ์ํ, ๊ทธ๋ฅ ์ผ๋ฐ ๊ณต๊ฒฉ์ํ๋ก ๋๋๋๊ฑด ์ด๋ฐ?
๋ AI ์ํ๋ฅผ ๋ชฐ๋ผ์ ๋ญ๋ผ ๋งํ๊ธฐ ํ๋ฌ. ๊ทผ๋ฐ ํค๋ค์ด์ด ๋ญ์?
์ฐจ์ง์ด๋ ๋ณ๋ค๋ฅผ๋ฐ ์๋๋ฐ ์ฝ๊ฒ ์ค๋ช ํ๋ฉด ์ฐจ์ง์ ๋๋ฅด๋๋์ ๋ชป์์ง์ด๋ฉด์ ๊ธฐ๋ชจ์๋ค๊ฐ ํ์์น๋งํผ ๋ชจ์ ์ํ์์ ํค๋ฅผ ๋๋ฉด ์คํฌ ๋ฐ๋ํ๋๊ฑฐ๊ณ
ํค๋ค์ด์ ๊ฑ ๋๋ฅด๋ ๋์ ๊ณ์ ์คํฌ ์ ์ง๋๋๊ฑฐ
์ด๋ฐ ๊ฒฝ์ฐ๋ ๋ณดํต ์ํ์ฒด ๋ฐ๋ก ๊ด๋ฆฌํ์ง
FSM ์ธ ์๊ฐ ํ์ง ๋ง๊ณ ์บ๋ฆญํฐ ์ํ๋ฅผ ๋ง๋ค์ด๋ผ. ์บ๋ฆญํฐ ์ํ๋ ํ์ฌ ์ฌ์์ค์ธ ๋์์ ๋ฐ๋ผ์ ๋ณํํ๋ฉด ๋๋ค. ๋์๋ง๋ค ์บ๋ฆญํฐ์ ์ํฅ์ ์ฃผ๋ ์ต์ ์ ์ถ๊ฐํด์ผํ๋ค. bool isMoveable => currentActions.FindIndex(iter => iter.affectInfo.isStandingAction) == -1 ์์ ๊ฐ์ด ํ์ฌ ์ํ๋ฅผ ์ฒดํฌํ ์ ์์ด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์บ๋ฆญํฐ ํด๋์ค์์, ๋ฌด๋ธ๋จผํธ ํด๋์ค์ ์ ์ฉ๋ฌธ์ isMovealbe ์ฒ๋ฆฌ๋ฌธ์ ์ ์ฉํด๋ผ.