🙇‍♀️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;
    }
}

태그:

카테고리:

업데이트: