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์œผ๋กœ๋งŒ ๋‚˜์˜ด


์ € ํ•จ์ˆ˜ ๋‚ด๋ถ€์ ์œผ๋ก  ๋‚ด์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š”๊ฑฐ๋ผ ๊ฐ๋„์˜ ์ฐจ์ด๋งŒ ๋‚˜์˜ค๊ณ  ํšŒ์ „ ๋ฐฉํ–ฅ์€ ์•ˆ์•Œ๋ ค์ฃผ๊ฑฐ๋“ 


๋งŒ์•ฝ ์ด ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ ๋ฐ”๋กœ ๋ฐ”๋ผ๋ณธ๋‹ค๋ฉด ์ƒ๊ด€์—†๋Š” ๋ถ€๋ถ„์ด์ง€๋งŒย ๋ณด๊ฐ„ํ•ด์„œ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ฐ”๋ผ๋ณด๊ฒŒ ํ•˜๋ ค๋ฉด ํ•„์š”ํ•œ ๋ถ€๋ถ„


ย