유니티(Unity) 트랜스폼 회전 관련 함수 모음(Transform.Rotate, Transform.LookAt, 기타)

반응형

유니티(Unity) 트랜스폼 회전 관련 함수 모음(Transform.Rotate, Transform.LookAt, 기타)

Transform.Rotate

게임 오브젝트를 회전시키는 데 사용되는 함수. 회전에 오일러 각도(euler Angles)를 사용하며 회전의 축을 월드(world) 또는 로컬(local)로 지정할수있습니다.
https://docs.unity3d.com/ScriptReference/Transform.Rotate.html
Rotate(Vector3 eulerAngles);
축(X, Y, Z)에 대해 회전할 각도를 포함한 Vector3를 사용
Rotate(new Vector3(30, 0, 0))은 X축을 기준으로 30도 회전

Rotate(float xAngle, float yAngle, float zAngle);
축에 대한 개별적인 회전 각도를 지정하는 세 개의 float 값을 사용
Rotate(30, 0, 0)은 X축을 기준으로 30도 회전

Rotate(xAngle, yAngle, zAngle, Space.Self);
로컬 축을 중심으로 회전

Rotate(xAngle, yAngle, zAngle, Space.World);
월드 축을 중심으로 회전

 

사용 예시
void Update()
{
    transform.Rotate(2f, 5f, 10f);
}

void Update()
{
    transform.Rotate(0f, 1f, 0f, Space.World);
}

void Update()
{
    transform.Rotate(new Vector3(1f, 1f, 1f));
}

void Update()
{
    transform.Rotate(new Vector3(0f, 0f, 1f), Space.World);
}

 

Transform.RotateAround

RotateAround(Vector3 point, Vector3 axis, float angle)

포인트(point)를 통과하는 축(axis)을 중심으로 각도(angle)만큼 오브젝트를 회전시킵니다.

(Rotates the transform about axis passing through point in world coordinates by angle degrees)
이 함수는 오브젝트의 위치(position)와 회전(rotation) 모두 변환합니다https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Transform.RotateAround.html

 

사용 예시

void Update()
{
transform.RotateAround(target.transform.position, Vector3.up, 40 * Time.deltaTime);
}

 


Transform.LookAt

오브젝트의 전방 벡터(forward vector)가 대상 오브젝트의 트랜스폼 또는 특정 위치를 향하도록 회전시킵니다.
https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Transform.LookAt.html
LookAt(Transform target)

오브젝트가 주어진 Transform을 향하도록 회전시킵니다.
transform.LookAt(targetTransform);

 

LookAt(Vector3 worldPosition)

오브젝트가 주어진 월드 공간 위치를 향하도록 회전시킵니다. 
Vector3 target = new Vector3.zero;
transform.LookAt(target);

 

Transform.SetPositionAndRotation

SetPositionAndRotation(Vector3 position, Quaternion rotation)
객체의 위치와 회전을 동시에 설정합니다(월드 좌표) 트랜스폼의 위치와 회전을 모두 설정해야하는 경우 위치와 회전을 개별적으로 할당하는 것보다 효율적인 방법입니다.
https://docs.unity3d.com/ScriptReference/Transform.SetPositionAndRotation.html

사용 예시

Vector3 newPos = new Vector3(0, 0, 0);
Quaternion newRot = Quaternion.Euler(0, 90, 0);
transform.SetPositionAndRotation(newPos, newRot);

 

Quaternion.RotateTowards

from회전(Quaternion)에서 to회전(Quaternion)으로 회전합니다

https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Quaternion.RotateTowards.html

 

사용 예시

현재 회전값(transform.rotation)에서 목표 회전값(target.rotation)으로 회전합니다.
void Update()
    {
        var step = speed * Time.deltaTime;
        transform.rotation = Quaternion.RotateTowards(transform.rotation, target.rotation, step);
    }

 


Quaternion.Euler

오일러 값에 대한 회전을 반환합니다.
https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Quaternion.Euler.html

사용 예시

오일러 각도(0, 30 ,0)에 대한 회전을 반환(y축을 중심으로 30도 회전)
Quaternion rotation = Quaternion.Euler(0, 30, 0);

Vector3 rotationVector = new Vector3(0, 30, 0);
Quaternion rotation = Quaternion.Euler(rotationVector);

 

 

 

반응형

댓글

Designed by JB FACTORY