์ ์ฐจ์ ๋งต ์์ฑ๊ธฐ ์์ฑํ์
์ ์ฒด์ ์ธ ๊ตฌ์กฐ
1. Binary Space Partitioning์ ํตํด ํฐ ์ฌ๊ฐํ์ ๋๋ค์ผ๋ก ์์ง/์ํ์ ์ชผ๊ฐ์ ๋ฐฉ์ ๋งจ๋ฌ.
2. ๊ฐ ๋ฐฉ์ ์ค์๊ฐ์ ๊ตฌํจ.
3. ๊ฐ๋ฐฉ์ ์ค์๊ฐ์ ๋น๊ตํด์, ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐฉ๊ณผ ์ฐ๊ฒฐ๋๋ ์ ์ ๋ง๋ฌ.
4. ํด๋น ์ ๊ณผ ๋ฐฉ ๋ฐ์ดํฐ๋ฅผ ํ ๋๋ก, ๋ฐ๋ฅ์ ๊น์์ค.
5. ๋ฐ๋ฅ ๋ฐ์ดํฐ๋ฅผ ํ ๋๋ก, 8๊ฐ์ offset(๋๊ฐ, ์ํ์ข์ฐ)์ ๋น๊ตํ์ฌ, ๊ทธ์ ์๋ง์ ํ์ผ์ ๊น์์ค.
6. ์์ฑ!
์ ์ฐจ์ ์ผ๋ก ๋งต์ด ์์ฑ๋จ!
์ ์ฒด ์ฌ์ด์ฆ, ๋ฐฉ๊ฐ ๊ฑฐ๋ฆฌ, ๋ฐฉ์ ์์ฑ ํ์
, ํ์ผ์
์ ์กฐ์ ํด์ค ์ ์์!
์๋ฅผ ๋ค๋ฉด, ๋ฐฉ์ ์์ฑํ์
์ square๊ฐ ์๋, ๋๋ค์ผ๋ก ์ค์ ํ๋ค๋ฉด,
์๋ ๊ฒ ์กฐ๊ธ์ ๋์กํ์ง๋ง ํน์์๋ ๋งต์ด ์์ฑ๋จ.
BSP๋ก ๋ฐฉ์ ์ค์ฌ์ ์ฐพ๊ณ , ํด๋น ์ค์ฌ์์ ๋๋คํ๊ฒ ์์ง์ด๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ๋ฅ์ ๋ง๋ค๊ณ , ๋ฐ๋ฅ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฒฝ์ ์์ฑ์์ผ์ค๊ฑฐ์ผ.
๊ฐ ํ์ผ๋ค์ ๋ค์ํ ๋ชจ์์ด ์๊ณ , ๋๋ ๋๋คํ ๊ฐ์ผ๋ก ์ด ํ์ผ์ ์ค์นํ๊ณ ์ถ์์ด.
๊ทธ๋์ tileSpriteData๋ผ๋ ์คํฌ๋ฆฝํฐ๋ธ ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค์ด์, List๋ก ๊ฐ ํ์ผ์ ๊ด๋ฆฌํจ.
๊ฐ๊น์ด์ ๋ณด๋ฉด ์ด๋ฐ ๋๋์ด์ผ.
์ด๋ ๊ฒ ํด๋น ํ์ผ๋์ Tile Sprite์ Rate๋ฅผ ์ค์ ํด์ฃผ๋ฉด, ๋น๋์ ๋ฐ๋ผ ์๋์ผ๋ก ์ฌ๋ฌ ํ์ผ์ ๋๋คํ๊ฒ ์์ฑํด์ค.
์ ์ฒด์ ์ธ ๊ตฌ์์ ์ธ๊ตญ์ ํ๋ธ ์ฐธ์กฐํด์, ์ฝ๋ ์ข ์์ ํ๊ณ , ํ์ผ๋ฐ์ดํฐ์
์ ๋ง๋ค์ด์ ๋๋ค ๋ฐฐ์นํ๊ฒ ์์ผฐ์ด.
์ด์ ํ ์ผ์ ๋ฐฉ์ ๋๋ค ์ผํฐ๋ฅผ ์ฐพ๊ณ , ๋ฐฉ์ ๋ฐ๋ฅ์ ๋น๊ตํด์ ์ค๋ธ์ ํธ๋ ์ ์ ๋ฟ๋ฆด ๊ฑฐ์ผ.
๋ ๋ค์ต์คํธ๋ผ๋ฅผ ์ฌ์ฉํด์, starting position์์ ๋จผ ๊ณณ์ ์์๋ฐฉ, ๋ณด์ค๋ฐฉ ํน์ ํ์ถ๋ก๋ฅผ ๋ง๋ค๊ฑฐ์ผ.
์ฐธ๊ณ ํ์ ์ ํฌ๋ธ ๊ณต์ ์ข ๋ถํ๋๋ฆผ๋น ๊ตฝ์ ๊ตฝ์ . ๋ณด๋์ ํ์ฟ ๋ฆฌํ ์ฝ๋๋ก ์๋ํ๋ค ์ค๋ ฅ๋ถ์กฑ์ผ๋ก ํฌ๊ธฐํจ ใ ใ
์ ์ฐจ์ ์์ฑ์ ์ ์ด์ผ - dc App
๊ณ ์!
์ด๋ฐ๊ฑด ์์ง์ ์์ ํ๋๊ฑฐ์?
๊ธ์ด์ด์์! ์์ง์ ์์ ํ ๊ฒ์ด ์๋๋ผ, Vecotr2Int์ขํ๊ฐ์ HashSet ์งํฉ์ผ๋ก ๋ฐ์๋๋ ๊ฒ๋๋ค! (0,0) ํ์ผ, (1,0) ํ์ผ ์ด๋ ๊ฒ์! ๊ทธ๋ ๊ฒ ๋ง๋ค์ด์ง ์ขํ๊ฐ์งํฉ(๋ฐฉ ์์น, ๋ณต๋ ๋ฑ)์ ์ํํ๋ฉด์ ๊ฐ ์์น์ ๋ฐ๋ฅ์ ๊น๋๋ค! ๊ทธ๋ผ ๊ทธ ๋ฐ๋ฅ์ ์ํํ๋ฉฐ, ์ฃผ๋ณ๋ฐ๋ฅ์ ์ฝ์ด์ ๋ฒฝ์ ์ธ์์ฃผ๋ ๊ฑฐ์์!