'ํ๋ฆฌํน ๋๋ค ๋ธ๋ฌ์ฌ'๋ก ๋ผ์ดํธ ์ค๋ธ์ ํธ ๋ฐฐ์นํ๊ณ ์๋๋ฐ ์๋ฌด๋ฆฌ ๋ด๋ ์ด๊ฑด ์์ฐ์ค๋ฌ์ด ๋๋ค์ด๋ ๋๋์ด ์ ํ ์ ๋ค์ด.
๋๋คํ ์์น๋ค์ ๋ฐฐ์นํ๋๋ฐ ๊ณ์ ํน์ ์ค๋ธ์ ํธ๋ง ๊ณ์ ๋์ค๋๊ฑฐ์ผ. ๊ทธ๋์ ํจ ์ฐ์๋์์น์ 50๊ฐ์ฉ ๋ฐฐ์นํด๋ดค๊ฑฐ๋ .
๋ผ์ดํธ ์ค๋ธ์ ํธ ์ข ๋ฅ: ๋ค ๊ฐ์ง
ํ๋ฆฐ์ค์ผ์ผ 0.001 - Element 1 ์ ํ๋ฅ : 50/50 100%
ํ๋ฆฐ์ค์ผ์ผ 0.500 - Element 1 ์ ํ๋ฅ : 36/50 72% (๊ธฐ๋ณธ๊ฐ)
ํ๋ฆฐ์ค์ผ์ผ 0.999 - Element 1 ์ ํ๋ฅ : 39/50 78%
์ ๋ํฐ + ํ๋ฆฐ ์ค์ผ์ผ์ ๊ตฌ๊ธ๋ง ํด๋ด๋ ๋์ค๋๊ฑฐ ใ ๋ ์๊ณ ํ๋ฆฐ์ผ๋ก ๊ฒ์ํ๋๊น Ken Perlin์ด๋ ๋์ด ์์ฐ์ค๋ฌ์ด ๋๋ค๊ฒฐ๊ณผ๋ฅผ ์ํด ๊ณ ์ํ ํ๋ฆฐ ๋ ธ์ด์ฆ๋ก๋ถํฐ ์ ๋๋ ์ด๋ฆ์ธ๊ฑฐ ๊ฐ์๋ฐ ์๋ฌด๋ฆฌ ๋ด๋ ์ ๋ฐ ์์ฐ์ค๋ฌ์ด ์์น๊ฐ ์๋์์? ์ด๋ป๊ฒ ์ต์๊ฐ์ผ๋ก ํ๋, ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํ๋ ์ต๋๊ฐ์ผ๋ก ํ๋ ํน์ ์ค๋ธ์ ํธ๊ฐ ๊ณผ๋ฐ์๋ฅผ ๋๋๊ณ . ๊ฒฝ์ฐ์ ์๊ฐ ๋ค ๊ฐ์ง๋ ๋๋๋ฐ! ์ต์๊ฐ์ด๋ฉด ๋๋ค์์๊ฐ ์ต์๋ก ๋ค์ด๊ฐ์ ํน์ ์ค๋ธ์ ํธ๋ง ์ฃผ๊ตฌ์ฅ์ฐฝ ๋์จ๋ค๊ณ ์ณ(๊ทธ๋๋ ์ ํํ ๋๋ฒ์งธ ์ค๋ธ์ ํธ๋ง ์ฃผ๊ตฌ์ฅ์ฐฝ ๋์ค๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง)
'ํ๋ฆฌํน ๋๋ค ๋ธ๋ฌ์ฌ' โ ์ด๊ฑฐ ์๋ฌด๋ ์ ์ฐ๋ ๊ฐ์ฐ๋ ๊ธฐ ๋ธ๋ฌ์ฌ์ธ๊ฑฐ์???
๊ทธ๋ฅ ํ๋ฆฌํน ๋ธ๋ฌ์ฌ 4๊ฐ ๋ง๋ค์ด์ ํ๋ํ๋ ์๋์ผ๋ก ๊ณจ๋ผ๋ฐฐ์นํด์ผ ๋๋ ๊ฐ ๋ง์??? ์๋๋ฉด ๋ด๊ฐ ๋ญ๊ฐ ์ฌ๊ฐํ๊ฒ ์๋ชป ์๊ณ ์๋๊ฑฐ์???
๊ฒฝ์ฐ์์ 12๊ฐ๋ก ๋๋ฆฌ๊ณ ๊ฐ์ ํ๋ฆฌํน3๊ฐ์ฉ ์ง์ ํด์คฌ๋๋ ์ข ๋๋ค์ฒ๋ผ ๋ณด์ด๊ฒ ๋์ค๋ค. ์ ํ์ง๊ฐ ๋๋ฌด ์ ์ด์ ๊ทธ๋ฌ๋;;
ํ๋ฆฐ๋ ธ์ด์ฆ๋ ๋ดค๋๋ฐ ์ด๊ฑด ์ฒจ๋ณด๋ค
ํ๋ฆฐ ๋ ธ์ด์ฆ์์ ์คํ ์ ์ผ๋ง๋ ๋ฐ์์ง ์ ํ๋๊ฑฐ์ ๋ง๋ก ์ค๋ช ํ๋ ค๋๊น ์ข ์ ๋งคํ๋ฐ.. ๋ ธ์ด์ฆ๋ฅผ ์ฐ์ ๊ณก์ ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์ฌ์ธ ๊ทธ๋ํ๋ก ์๋ฅผ ๋ค์ด๋ณผ๊ฒ ์ฌ์ธ ๊ทธ๋ํ์ฒ๋ผ ์ค๋ธ์ ํธ๋ฅผ ๋ฐฐ์นํ๊ณ ์ถ์ด์ ์ด์ฉํ๋ค๊ณ ์๊ฐํด๋ด 0~2pi ๊ตฌ๊ฐ์ด 0์์ ์์ํด์ 1๊น์ง ์ฌ๋๋ค ๋ด๋ ธ๋ค ๋ค์ 0์ผ๋ก ๋ด๋ ค์ค๋๊น ์ ๋นํ ๊ฐ๊ฒฉ๋งํผ 10๊ฐ๋ฅผ ๋ฟ๋ ค์ฃผ๋ฉด ๊ทธ๋ํ ๋ชจ์ ๋น์ทํ๊ฒ ๋์ฌ๊ฑฐ๋ ๋ง์ผ? ๊ทผ๋ฐ ๋ค๊ฐ ์คํ 0.01 ์ด๋ ๊ฒ ์งง๊ฒ ์ก์๋ฒ๋ฆฌ๋ฉด ์ฒ์๊ฑด sin(0)=0, ๋๋ฒ์ฌ๊ฑด sin(0.01)=0.0099 ์ด๋ฐ ์์ด๋ผ ์ด๋ฐ๋ถ 10๊ฐ๋ง ๊ฐ์ ธ๋ค ์ฐ๋๊น ๋์ด ๋ณํ๊ฐ ๊ฑฐ์ ์์๊ฑฐ์
๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ธ๋ฌ์๊ฐ ํ๋ฆฐ๋ ธ์ด์ฆ ๊ฐ 0๋ถํฐ 1 ์ฌ์ด์ ๋ค๊ฐ ๋ฃ์ ๊ฐ์ฒด๋ฅผ ๋ฃ์๋ค๊ณ ์๊ฐํ์๋ (0~0.25์ด๋ฉด 0๋ฒ, 0.25~0.5๋ฉด 1๋ฒ, 0.5~0.75๋ฉด 2๋ฒ, 0.75~1์ด๋ฉด 3๋ฒ) ์ค์ผ์ผ์ด ์กด๋ ์์ผ๋ฉด perlin(x,y)*scale=0.5 ์์ perlin(x+1, y+1)*scale=0.500001 ๋ญ ์ด๋ด์์ผ๊ฑฐ๋๊น ๊ฐ์ ๊ฐ๋ง ์ฃผ๊ตฌ์ฅ์ฐฝ ๋์ค๋๊ฑฐ์ง
์ค์ ๋ก 2d-extras ์ฝ๋ ๋ณด๋ฉด ์ธ๋ฑ์ค ๊ตฌํ๋๊ฒ var index= Mathf.Clamp(Mathf.FloorToInt(GetPerlinValue(position, m_PerlinScale, k_PerlinOffset) * m_Prefabs.Length), 0, m_Prefabs.Length - 1); ์ด๊ณ ํจ์๋ private static float GetPerlinValue(Vector3Int position, float scale, float offset) { return Mathf.PerlinNoise((position.x + offset)*scale, (position.y + offset)*scale); } ์ด๋ ๊ฒ ๊ตฌํ๋์ด์์
๊ฒฝ์ฐ์ ์๊ฐ ๋์๋ ์๋์จ๊ฒ๋ ์์ธํ ๋ณด๋ฉด ์ด๋ฐ(ํน์ ํ๋ฐ) 1/3 ๋ถ๋ถ์ด ๋ ๋ง์ด ๋์ค๊ฒ ์น์ฐ์ณ์์๊ฑธ?
๊ทธ๋ ๊ตฌ๋! 4๊ฐ 3์ธํธ ๋ฃ์๋๋ฐ 111 222 333 444 ์ด๋ ๊ฒ ์ ๋ฃ๊ณ 1234 1234 1234 ์ด๋ ๊ฒ ๋ฃ์๋๋ ๋์ถฉ ๋น์ทํ๊ฒ ๋ฝํ๊ฑฐ ๊ฐ์.