728x90
반응형
Euler
-x, y, z 축으로 기준으로 하는 회전. 축이 겹쳐질 때 어떤 축인지 구별할 수 없는 짐벌락 현상이 벌어진다.
Quaternion
-x, y, z, w 네 축으로 각도를 표현. 유니티 에디터 상에서는 x, y, z의 오일러 각도를 쓰는 것처럼 보이지만 내부적으로 코드단에서 쿼터니언으로 동작함.
public class Test : MonoBehaviour
{
float speed = 30;
void Update()
{
Quaternion rot = transform.rotation;
rot.x += Time.deltaTime * 10;
transfrom.rotation = rot;
}
}
public class Test : MonoBehaviour
{
float speed = 30;
void Update()
{
Vector3 vec = transform.rotation.eulerAngles;
vec.x += Time.deltaTime * speed;
transform.rotation = Quaternion.Euler(vec);
}
}
위의 두 스크립트로 회전을 적용하면 오류가 발생한다.
오류가 발생하지 않게 하기 위해서는 값을 가져와서 계산하고 다시 대입하는 방식이 아니라 계속 값을 잡아서 계산해야 한다.
public class Test : MonoBehaviour
{
float speed = 30;
Vector3 vec;
void Update()
{
vec.x += Time.deltaTime * speed;
transform.rotation = Quaternion.Euler(vec);
}
}
public class Test : MonoBehaviour
{
float x;
void Update()
{
x = Time.deltaTime * 10;
transform.rotation = Quaternion.Euler(x, 0, 0);
}
}728x90
반응형
'Unity > 내용 정리&Tip' 카테고리의 다른 글
| [Unity] MeshSync 패키지 (Blender-Unity 실시간 싱크) (0) | 2024.03.26 |
|---|---|
| [Unity] 캔버스(Canvas)와 UI, Text, RectTransform (0) | 2023.09.22 |
| [Unity] Tag와 Layer (0) | 2023.08.24 |
| [C#] Static 변수 / Static 함수 / Static 변수의 자기참조 (0) | 2023.08.24 |
| [Unity] 오브젝트 통과와 충돌, 제거(Collider / Rigid Body / Destroy) (0) | 2023.08.17 |