๋ฌผ์ฒด๋ฅผ 0~360๋ ๋๋ฆฌ๋ ค๊ณ ํ๋๋ฐ
๊ทธ๋ฅ rotation์ ๋ฃ์ผ๋ฉด ์ ๋์๊ฐ๋๊ฑธ ํ์ธํ
๋ถ๋๋ฝ๊ฒ ์์ง์ด๊ฒ ํ๊ธฐ์ํด ๊ทธ ๋ค slerp๋ฅผ ์ถ๊ฐํ๋๋ฐ
์ฟผํฐ๋์ธ์ ํน์ง๋๋ฌธ์ด๋ผ๋ ๋ญ๋ผ๋ -180~180์ฌ์ด์ ๊ฐ์ผ๋ก๋ง ์ด๋์ด ๋์
๋ฌผ์ฒด๊ฐ ํ์ชฝ๋ฐฉํฅ์ผ๋ก ์ญ ๋์๊ฐ๋๊ฒ ์๋๋ผ
180-120๋๋ฅผ ๊ณ์ ์๋ค๊ฐ๋ค ํ๋ค์.
dot product๋ฅผ ์ด์ฉํ๊ฑฐ๋ ํด์ ์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ค๊ณ ๋ ํ๋๋ฐ ์ ๊ฐ ๊ทธ์ชฝ ์ง์์ด ์งง์์ ํน์ ์ข ๋ ์ฌ์ด๋ฐฉ๋ฒ์ด๋ ์ฝ๊ฒ ์ค๋ช ํด์ฃผ์๋ฉด ๊ฐ์ฌํฉ๋๋ค...
๊ธฐ๋ณธ์ ์ผ๋ก ์์ ๊ฐ๋ค ์ด์ฉํ ๋ ์ค์ผ๋ฌ ๊ฐ์ ์ด์ฉํด์ ์ ๊ทผํ์ต๋๋ค.
//์ถ๊ฐ
public float velocity=5f;
ย ย // Start is called before the first frame update
ย ย void Start()
ย ย {
ย ย ย ย ย
ย ย }
ย ย // Update is called once per frame
ย ย void Update()
ย ย {
ย ย ย ย transform.rotation = Quaternion.Slerp(transform.rotation, destinationQuaternion, velocity*Time.unscaledDeltaTime);
ย ย }
ย ย public void turnobject()
ย ย {
ย ย ย ย Vector3 vector = new Vector3();
ย ย ย ย vector = Quaternion.AngleAxis(60, new Vector3(1,0,0)) * vector;
ย ย ย ย Debug.Log(vector);
ย ย ย ย destinationQuaternion = Quaternion.Euler( gameObject.transform.rotation.eulerAngles.x+60f, gameObject.transform.rotation.eulerAngles.y , gameObject.transform.rotation.eulerAngles.z);
ย ย }
ย ย public void OnMouseDown()
ย ย {
ย ย ย ย turnobject();
ย ย }
}
์๋๋ ๊ทธ๋ฅ ๋ฒํผ๋๋ฅด๋ฉด transform.rotation์ ์ค์ผ๋ฌ๊ฐ ๋บ๊ฑธ ๋ฃ์์์ต๋๋ค.
๋ํธ์ ใฑใฑ
slerp๋ฅผ ์ด๋ป๊ฒ ์ถ๊ฐํ๋์ง ์ฒจ๋ถํด๋ณด์
์ถ๊ฐํ์ต๋๋ค
x์ถ ํ์ ์ํค๋ ๊ฑฐ๋ฉด x์ถ ํ์ ๊ฐ xDegree๋ฅผ ๋ณ์๋ก ์ ์ฅํ๊ณ ํด๋ฆญํ๋ฉด targetDegree = xDegree+60์ํค๊ณ update์์ xDegree๋ฅผ Mathf.lerp ์ํค๊ณ ๊ทธ๊ฑธ rotation์ AngleAxisํ๋๊ฑด ์ด๋ฐ
https://answers.unity.com/questions/1236494/how-to-rotate-fluentlysmoothly.html
์ฟผํฐ๋์ธ ์ด์ฉํด์ ํ๊ณ ์ถ์ผ๋ฉด ์ด๊ฑฐ ๋ต๋ณ ์ฐธ๊ณ ใฑใฑ
๊ฐ์ฌํฉ๋๋ค