์๋ ๋๋๊ทธ ์ค ๋๋ ์ด์ผ๊ธฐ ํ๊ณ ๋ ๋ค์์ ๊ฐ์๊ธฐ ๊ถ๊ธํด์ ์นด๋ฉ๋ผ ์ํ์ ๋ฐ๋ผ ๋ง์ฐ์ค ์ขํ ์ด๋ป๊ฒ ์ฐํ์ง ํ ์คํธ ํด๋ณด๋๋ฐ ์ด์ํ๋ค.
์นด๋ฉ๋ผ ํฌ์๋ฐฉ์์ด Perspective์ผ๋
๊ทธ๋ฅ Input.mousePositionํ๋ฉด ๋ง์ฐ์ค ์์น ๋ฐ๋ผ์ screen ์ขํ ์ ์ฐ์ด์ค๋ค.
๊ทผ๋ฐ ScreenToWorldPoint(Input.mousePosition)์ด์ฉํด์ ๋ง์ฐ์ค ์์น๋ฅผ ์๋์ขํ๋ก ๋ํ๋ด๋๊น (0.00, 1.00, -10.00)์ผ๋ก ๊ณ ์ ๋๋ค.
์ ๊ทธ๋ฐ์ง ์ ๋ชจ๋ฅด๊ฒ ๋๋ฐ ๋ด ์๊ฐ์๋ ์๊ทผ๊ฐ ์์ผ๋ฉด ์นด๋ฉ๋ผ๊ฐ ์ผ์ง์ ์ด ์๋๋ผ ๋๊ฒํผ์ ธ์ ์ด๋ ๊ฒ ์ฐํ๋๊ฑด๊ฐ ์ถ๋ค.
์ด๊ฑฐ ์ด์ ์๋ ์ฌ๋ ์์?
+ ์นด๋ฉ๋ผ ํฌ์๋ฐฉ์์ด Perspective์ด๊ณ ๊ทธ๋ฅ ๋ง์ฐ์ค์ขํ๋ฅผ ์ฐ์ ๋
+ ๊ฒฐ๊ณผ
+ ScreenToWorldPoint๋ฅผ ํตํด ๋ง์ฐ์ค์ขํ๋ฅผ ์๋์ขํ๋ก ๋ฐ๊พผ ํ
+ ๊ฒฐ๊ณผ
ScreenToWorldpoint ์ธ์ ๋ฒกํฐ 3์ธ๋ฐ z์ 0 ๋ฃ๊ณ ์์์ z์ ๋์ค๊ฐ ๋ฃ์ด์ค์ผ ํ๋๋ฐ 0 ๋ฃ์ผ๋๊น ์นด๋ฉ๋ผ ์์น ๋์ค๋๊ฒ ๊ฐ์๋ฐ
๋ง์ํ์ ๋๋ก ์์ ํ๋๋ ์ขํ๊ฐ ์ ์ฐํ๋ค์. ๊ฐ์ฌํฉ๋๋ค! cam.ScreenToWorldPoint(Input.mousePosition + (Vector3.forward * (cam.fieldOfView + 10)))
Mouseํฌ์ง์ ์ Z์ขํ๊ฐ ๋ฌด์กฐ๊ฑด 0์ด๋ผ์ ๊ทธ๋ผ perspective ๊ด๊ฐ์์ ๊ทธํจ์ ์คํํ๋ฉด z๊ฐ๋ ๊ณ์ฐํ๋๋ฐ z๊ฐ 0์ด๋ฉด ์นด๋ฉ๋ผ์ ๊ฐ์ฅ ์ข์๋ถ๋ถ์ ํฌ์ง์ ์ด๋ผ ๋์ด๊ฐ ์๊ธฐ๋๋ฌธ์ ๊ฐ์ด ๋ณํ ์๊ฐ ์์. mouseํฌ์ง์ ์ z๋ฅผ ๋ํ๊ฐ์ ์ต์ข ์ ์ผ๋ก ๋ฃ์ด์ค์ผ ์ ๋์ํ๋ค๊ณ ํจ. Z๋ฅผ ๋ญ ๋ฃ์์ง๋ ์ ๋งคํ๋ค
z๋ฅผ ๋ญ ๋ฃ์์ง ๋ชฐ๋ผ์ ๋ญ๊ฐ๋ฅผ ๋ฃ์ด์คฌ๋๋ฐ ์ขํ๊ฐ ์ ์ฐํ๋๋ค. z์ขํ์ ๋ญ ๋ฃ์ด์ค์ง ๋ชฐ๋ผ์ fieldOfView๋ฅผ ๋ฃ์ด์ฃผ๊ณ ์นด๋ฉ๋ผ ์๋ z๊ฐ์ -1์ ๊ณฑํด์ ๋ฃ์์ต๋๋ค. ๋์์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!