Vector2 mpos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 target = mpos - new Vector2(transform.position.x, transform.position.y);
float angle = Vector2.Angle(-transform.right, target);
Vector3 crossVector = Vector3.Cross(-transform.right, target);
if (crossVector.z < 0.0f) {
angleย *= -1.0f;
} else if (crossVector.z == 0.0f) {
angleย = 0.0f;
}
transform.Rotate(Vector3.forward,ย angle);
์ฌ๊ธฐ์ย transform์ ์ ์ด ์ค๋ธ์ ํธ์ ํธ๋์คํผ์ ๋ปํ๊ณ
๊ตต์๊ธ์จ ํ์ํ๊ฑด ์ด์ด ํ์ฌ ๋ฐ๋ผ๋ณด๊ณ ์๋ ๋ฐฉํฅ์ ๋ฒกํฐ์
์ง๋ฌธ๊ธ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ์ค์ผ๋กํ๋ฉด ์ผ์ชฝ์ ๋ฐ๋ผ๋ณด๊ณ ์์ผ๋ย transform.right์ -๋ถ์ฌ์ค๊ฑฐ
์ฌ๊ธฐ์ ๊ตณ์ด ์ธ์ ์ ์ด ์ด์ ๋ย ์ธ์ ํ๋ฉด ๋์ค๋ ๋ฒกํฐ์ Z์ถ ๊ฐ์ด ์์๋ ์์๋์ ๋ฐ๋ผ ํ์ ๋ฐฉํฅ์ ์ ์ ์๋ค
Vector2.Angle์ ๊ฐ์ 0~180์ผ๋ก๋ง ๋์ด
์ ํจ์ ๋ด๋ถ์ ์ผ๋ก ๋ด์ ์ผ๋ก ๊ณ์ฐํ๋๊ฑฐ๋ผ ๊ฐ๋์ ์ฐจ์ด๋ง ๋์ค๊ณ ํ์ ๋ฐฉํฅ์ ์์๋ ค์ฃผ๊ฑฐ๋
๋ง์ฝ ์ด ์ค๋ธ์ ํธ๊ฐ ๋ง์ฐ์ค๋ฅผ ๋ฐ๋ก ๋ฐ๋ผ๋ณธ๋ค๋ฉด ์๊ด์๋ ๋ถ๋ถ์ด์ง๋งย ๋ณด๊ฐํด์ ๋ถ๋๋ฝ๊ฒ ๋ฐ๋ผ๋ณด๊ฒ ํ๋ ค๋ฉด ํ์ํ ๋ถ๋ถ
ย
์ ์ด๋ ๊ฒํ๋ฉด ์ด์ด ํ์ ํ๊ธดํ ๊ฑฐ๊ฐ์๋ฐ ์์ก์ด๋ถ๋ถ์ด ๋๊ฐ์์์น๋ก ๊ณ ์ ๋์ง๋ ์์๊ฑฐ๊ฐ์๋ฐ์
๊ทธ๋ฅ ๊ธฐ๋ณธ์ ์ธ ํ์ ์ ์ธ ์ค ์๋๋ฐ ํน์ ์ ์ ์ค์ฌ์ผ๋ก ํ์ ์ํค๋๊ฑธ ํ ์ค ๋ชฐ๋ผ์์. ์ฌ๋์ ๋๋ฆฌ๋ฉด ๋ฐฐ๋ฅผ์ก๊ณ ๋๋ฆฌ๋๊ฑฐ๋ ์ฝ๋ฅผ์ก๊ณ ๋๋ฆฌ๋๊ฑฐ๋ ํ๋ฆฐ๊ฑฐ์ฒ๋ผ
๋น ์ค๋ธ์ ํธ๋ฅผ ํ๋ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ ์ด ์ด๋ฏธ์ง๋ฅผ ์์์ผ๋ก ๋ฃ์ ๋ค์์ ์ด ์ด๋ฏธ์ง์ ๋ก์ปฌ์์น๋ฅผ ๋ณ๊ฒฝํด์ฃผ๊ณ ๋น ์ค๋ธ์ ํธ๋ฅผ ํ์ ์์ผ์ฃผ๋ฉด ๋๋๊ฑฐ์์
์๋ ์๋ ์ง๋ฌธ๊ธ ๋ด์ฉ์ฒ๋ผ RotateAround์จ๋ ์๊ด์์