ย  ย  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์— ๊ฒ€์ƒ‰ํ•ด์„œ ๋œป์„ ๋ด๋„ ์ž˜ ์ดํ•ด๊ฐ€ ๊ฐ€์งˆ ์•Š๋„ค



ํ˜น์‹œ ์„ค๋ช…ํ•ด์ค„ ์‚ฌ๋žŒ ์žˆ์„๊นŒ?