์ ๋ํฐ ์์ ๋ณด๋ฉด์ ๋ฐ๋ผ๋ง๋ค๊ณ ์์
์คํฌ๋ฆฐ ์ค์์์ raycast ์ด์ ๋ชฉํ๋ฌผ ์ฝ๋ผ์ด๋ ๋ง์ผ๋ฉด ๊ทธ๋ ์ด๋ฆ debug.log๋ก ๋ฐ์ค๋๊ฑด๋ฐ ์ ์๋ฐ ์๋๋ ์ด๊ฑฐ
void Update () {
ย ย ย ย if(Input.GetMouseButtonDown(0))
ย ย ย ย {
ย ย ย ย ย ย Ray rayOrigin = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));
ย ย ย ย ย ย RaycastHit hitInfo;
ย ย ย ย ย ย if (Physics.Raycast(rayOrigin, out hitInfo))
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย Debug.Log("Hit : " + hitInfo.transform.name);
ย ย ย ย ย ย }
ย ย ย ย }
์๋ฌด๋ฆฌ ์ผ์ชฝ ๋ง์ฐ์ค ํด๋ฆญํด๋ด๋ ๋ก๊ทธ๊ฐ ์๋จ๋๋
๋ญ๊ฐ ๋ฌธ์ ค๊น
Ray๋ฅผ ๊ตฌ์ฑํ๋ ํ์์์๋ Ray์ ์์์ (origin), ๊ทธ๋ฆฌ๊ณ ๋ฐฉํฅ (direction), ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๋ฆฌ ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๊ฑฐ๋ฆฌ๋ผ๋ ์์๊ฐ ์๋ค์.
ViewportPointToRay ๋งค์๋์ ๊ฒฐ๊ณผ์ ๋ฐฉํฅ๋ฒกํฐ๋ ๋จ์๋ฒกํฐ์ด๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ฆฌ๊ฐ 1์ ๋๋ค. ๋ฐ๋ผ์ ๊ฑฐ๋ฆฌ๋ฅผ ๋๋ ค์ฃผ์ ์ผ ํฉ๋๋ค. Physics.Raycast( rayOrigin.origin , rayOrigin.direction, out hitinfo, 10f ) ์ด๋ฐ์์ผ๋ก์
ํน์๋ ์งง์๊ฐ ํด์ ๊ฑฐ๋ฆฌ๋ฅผ Mathf.Infinity๋ก ํด๋ดค๋๋ฐ๋ ์๋จ์..ใ ๊ทธ๋ฆฌ๊ณ ์ ๊ฑฐ ์์ ๊ฐ๋ฅด์ณ์ฃผ๋ ๊ฐ์ฌ๋ ๊ฑ ์ ๋ ๊ฒ ํด๋ ์ ์ฉ๋๋๋ ์์๋๋๊ฑฐ์ง
์ผ๋จ ์์ฌํ ์ ์๋๊ฑด Scene์์ Camera๊ฐ ์ฌ๋ฌ๊ฐ์ผ๊ฒฝ์ฐ ๋๋ฌธ์ ์๊ฒ๋ชจ๋ฅด๊ฒ Caemra.main์ ์์ฐ์๋๊ฒ ์ข์์ฌ. ์นด๋ฉ๋ผ main์ ๋ชจํธํ ์ ์๊ฑฐ๋ ์. ๊ทธ๋ฅ Camera ๋ณ์ ์ ์ธํด๋๊ณ ์ธ์คํํฐ๋ก ๋์ด์ค์ธ์ฌ
๊ทธ๋ฆฌ๊ณ ์ ๋ฐ์ดํธ์์ Debug.DrawRay ํจ์๋ก Ray๋ฅผ ๊ทธ๋ ค๋ณด์๋๊ฒ ์ข์ต๋๋ค. (if ์กฐ๊ฑด๋ฌธ์ ๋ฃ์ง๋ง์๊ณ ํญ์ ๊ทธ๋ฆฌ๋๋ก)
๋ฐฉ๊ธ ์ธํฐ๋ท์ผ๋ก ๊ทธ๊ฑฐ ์ฐพ์์ ํด๋ดค๋๋ฐ๋ ์๋ผ์ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ๋ญ๊ฐ๋ฌธ์ ์ง ์ ํ ๋ชจ๋ฅด๊ฒ๋ค
ray ๊ทธ๋ ค๋ณด๋๊ฑฐ ์ผ๋จ ํด๋ณผ๊ฒ์ผ
ray๊ฐ ์์ ์๊ทธ๋ ค์ง์.. scripting API์ ์๋๊ฑฐ ๋ฐ๋ค๊ฐ ํด๋ณด๋๊น rayOrigin์ ๋ฌธ์ ๊ฐ ์๋๊ฑฐ๊ฐ๊ธฐ๋ ํ๊ณ ..
๊ทธ๋ฅ Camera.main.transform.position, Camera.main.transform.forward. ๋ก๋ฐ๊ฟ๋ณด์์
๊ทธ๊ฒ๋ ํด๋ด์ช์ผ.. ๊ทผ๋ฐ ๊ณ์ ํด๋ณด๋๊น ์ซ ์ด์ํ๊ฒ log ๋ง๊ณ drawline์ ๋ ๋๋ค. ray๋ ์ด์ง๋๋ฐ debug.log๊ฐ ์ด์ํ๊ฑด๊ฐ