[Unity] Euler 회전과 Quaternion 회전
2023. 8. 28. 16:57ㆍUnity
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' 카테고리의 다른 글
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(6) Hit 이펙트 추가 (0) | 2023.08.31 |
---|---|
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(5) 소행성 추가 (0) | 2023.08.31 |
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(4) 미사일 발사 (0) | 2023.08.28 |
[Unity] Tag와 Layer (0) | 2023.08.24 |
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(3) 플레이어 제한 (0) | 2023.08.24 |