ย ย void MoveControl()
ย ย {
ย ย ย ย Vector3 viewPos = Camera.main.WorldToViewportPoint(transform.position);
ย ย ย ย viewPos.x = Mathf.Clamp01(viewPos.x);
ย ย ย ย viewPos.y = Mathf.Clamp01(viewPos.y);
ย ย ย ย Vector3 worldPos = Camera.main.ViewportToWorldPoint(viewPos);
ย ย ย ย transform.position = worldPos;
ย ย }
์นด๋ฉ๋ผ ๋ฐ์ผ๋ก ํ๋ ์ด์ด๋ฅผ ๋ชป๋๊ฐ๊ฒ ํ๋ ์ฝ๋๋ฅผ ๊ตฌ๊ธ๋ง์ผ๋ก ์ฐพ์๋๋ฐ
์ ์ ์ฝ๋์ ๋ํ ์ค๋ช ์ด ์์ด (๊ทธ๋ฅ ์ด ์ฝ๋๋ฅผ ์ฐ๋ฉด ๋ฉ๋๋ค. ํ๊ณ ์ฐ์ฌ์์)
๊ทธ๋์ ํ ์ค ํ ์ค ํด์ํ๋ฉด์ย ์ดํดํ๋ ค๊ณ ์๋ ์ค์ธ๋ฐ ์ ์ํ๋ฆฌ๋ค
Vector3 viewPos = Camera.main.WorldToViewportPoint(transform.position);
์ด ์ค์ "transform์ position์ Camera์ Viewport ๊ธฐ์ค์ผ๋ก ๋ฐ๊พผ๋ค." ๋ผ๋ ๋ป๊ฐ๊ณ ,ย ๊ทธ๊ฑธ viewPos์ ์ ์ฅํ๋ ์ฝ๋๋ก ์ดํดํ๊ณ
viewPos.x = Mathf.Clamp01(viewPos.x);
viewPos.y = Mathf.Clamp01(viewPos.y);
์ด๊ฑด viewPos์ ๋ฒ์๋ฅผ 0์์ 1๊น์ง ๊ณ ์ ์ํค๋ ์ฝ๋๋ก ์ดํดํ๊ณ
Vector3 worldPos = Camera.main.ViewportToWorldPoint(viewPos);
transform.position = worldPos;
์ด ์ค์ด ์ดํด๊ฐ ์ด์ง ์๊ฐ๋๋ฐ, ์์์ ๊ณ ์ ์ํจ viewPos๋ฅผ ๋ค์ world๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ๊ฟ์
๊ทธ๊ฑธ transform์ position์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค... ๋ผ๋ ๋ป๊ฐ์๋ฐ
WorldToViewportPoint ๊ฐ์ ํจ์๋ฅผ ์ ๋ํฐAPI์ ๊ฒ์ํด์ ๋ป์ ๋ด๋ ์ ์ดํด๊ฐ ๊ฐ์ง ์๋ค
ํน์ ์ค๋ช ํด์ค ์ฌ๋ ์์๊น?
๊ณ์ ๋ณด๋ค๊ฐ ์ดํดํ ๊ฒ ๊ฐ์์ ๋ค์ ๋๊ธ๋ก ๋ฌผ์ด๋ด. ๊ทธ๋ฌ๋๊น, viewPos์ ์นด๋ฉ๋ผ ์์ ์ขํ์ธ Viewport๋ฅผ ๋ด๊ณ , ๊ทธ ๊ฐ์ Clamp01๋ก 0์์ 1๊น์ง๋ก ์ ํํ๋ค์, ๊ทธ๊ฑธ ๋ค์ World ๊ธฐ์ค์ผ๋ก ๋ณํํด์ ํ๋ ์ด์ด์ ์ขํ๊ฐ์ผ๋ก ์ฐ๋๊ฑฐ์ง?
๊ฐ์จ์