유니티(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);
'유니티게임개발 > 기초공부' 카테고리의 다른 글
유니티 무료 얼굴 애니메이션(facial animation blendshape) 에셋 (0) | 2023.03.14 |
---|---|
유니티(Unity)의 스트리밍 에셋 폴더(StreamingAssets) (0) | 2023.03.07 |
유니티에서 프리팹(Prefab) 사용하기(프리팹생성, apply, select, revert) (0) | 2023.02.07 |
유니티(Unity) 실습 예제 - 총알을 발사하는 씬 구성하기 (0) | 2023.02.03 |
유니티 실습 예제 공굴리기 게임 만들기2 (0) | 2023.02.02 |