C# Rookiss Part3 유니티 엔진 : Rotation
🙇♀️Rotation
- rotation은 Quaternion을 반환
- Vector가 아님
🪐절대 회전값
float _yAnlge = 0.0f;
void Update()
{
_yAnlge += Time.deltaTime * _speed;
// 절대 회전값
//transform.eulerAngles = new Vector3(0.0f, _yAnlge, 0.0f);
}
y축으로 회전함 eulerAngles는 벡터 전체를 적어줘야함
transform.eulerAngles = new Vector3(0.0f, Time.deltaTime * _speed, 0.0f);
- 불가능
🪐Rotate
transform.Rotate(new Vector3(0.0f, Time.deltaTime * 100.0f, 0.0f));
- 가능
eulerAngles과 다르게 변하는 값을 넣어 줘도 됨
🪐Quaternion.LookRotation
transform.rotation = Quaternion.LookRotation(Vector3.forward);
벡터의 방향으로 방향을 돌림 이때 벡터는 월드좌표!
🪐Quaternion.Slerp
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.forward), 0.2f);
회전값을 주어 처음값에서 나중값으로 서서히 변화시킴 1.0f면 나중값으로 즉시 변화 0.0f면 처음값에서 변화 x
🪐이동 코드
void Update()
{
if (Input.GetKey(KeyCode.W))
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.forward), 0.2f);
transform.position += Vector3.forward * Time.deltaTime * _speed;
}
if (Input.GetKey(KeyCode.A))
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.left), 0.2f);
transform.position += Vector3.left * Time.deltaTime * _speed;
}
if (Input.GetKey(KeyCode.S))
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.back), 0.2f);
transform.position += Vector3.back * Time.deltaTime * _speed;
}
if (Input.GetKey(KeyCode.D))
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.right), 0.2f);
transform.position += Vector3.right * Time.deltaTime * _speed;
}
}