[Unity] Rotation

dd_ddong·2022년 5월 17일
0

Unity

목록 보기
2/9

transform.rotation

unity에서 방향전환을 위해 transform.rotation에 접근 해보자

당연히 Vector3 type일 줄 알았던 rotation이 Quaternion type이다.
unity에서는 방향을 제어할 때 Vector3를 이용하거나 Quaternion을 이용할 수 있다.

Vector3이용

transformrotation말고 eulerAngles라는 프로퍼티가 있는데 Vector3로 방향을 전환할 수 있게 해준다.

 void Update()
    {
    	_yAngle = Time.deltaTime * 100.0f;
        transform.eulerAngles = new Vector3(0,_yAngle,0);
    }

transform.eulerAngles에 더하거나 빼는 연산을 하면 degreerk 360을 넘는 오류가 발생할수 있어 _yAngle 값을 증가시켜줘야 한다.

 void Update()
    {
    	_yAngle = Time.deltaTime * 100.0f;
		transform.Rotate(new Vector3(0,_yAngle,0));
    }

아니면 Rotate()함수를 이용하면 된다.

Quaternion

Quaternion type은 3D오브젝트의 회전시 발생하는 짐벌록 현상을 막기 위해 사용한다고만 알아두자.

 void Update()
    {
    	_yAngle = Time.deltaTime * 100.0f;
        transform.rotation += Quaternion.Euler(new Vector3(0,_yAngle,0));
    }

rotation이 Quaternion type이기 때문에 바로 += 해주면 된다. 대신 eulerAngle값을 quaternion으로 바뀌주는 Quaternion.Euler() 사용해주자

 void Update()
    {
    	_yAngle = Time.deltaTime * 100.0f;
        transform.rotation += Quaternion.Euler(new Vector3(0,_yAngle,0));
    }

Quaternion에 있는 LookRotation()은 원하는 방향벡터를 넣어주면 해당하는 Quaternion을 생성해준다.

 void Update()
    {
        transform.rotation = Quaternion.LookRotation(Vector3.forward);
    }

방향을 바꿀때 바로 바뀌지 않고 천천히 방향을 바꾸고 싶을때 Slerp()사용하면 된다.

 void Update()
 	{
        transform.rotation = Quaternion.Slerp(Quaternion.LookRotation(Vector3.forward), 0.2f);
        
    }

2번째 파라미터로 속도 조절가능

0개의 댓글