• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Rotate, rotation 메서드 관련 질문

22.07.10 15:54 작성 조회수 120

0

float _yAngle = 0.0f;

...

void Update()
    {

      _yAngle += Time.deltaTime * 100.0f;

1. transform.eulerAngles = new Vector3(0.0f, _yAngle, 0.0f);

2. transform.Rotate(new Vector3(0.0f, Time.deltaTime * 100.0f, 0.0f));

3. transform.rotation = Quaternion.Euler(new Vector3(0.0f, _yAngle, 0.0f));

}

여기서 1번 eulerAngles하고 3번 transform.rotation에 'Time.deltaTime * 100.0f' 값을 넣으면 회전하지 않고 '_yAngle'를 넣어야지 회전하게 되었습니다. 근데 2번 transform.Rotate에는 '_yAngle' 변수를 넣으면 너무 빠르게 회전하고 'Time.deltaTime * 100.0f' 값을 넣으니 정상적으로 회전합니다. 

  어떤 메서드에서 'Time.deltaTime * 100.0f'를 넣어야지 정상적으로 회전하고 '_yAngle'를 넣어야지 제대로 회전하게 되는지 잘 이해가 되지 않습니다.

답변 1

답변을 작성해보세요.

1

우선 이런 고민이 생기면, 각 기능의 유니티 공식 문서를 읽어보시기 바랍니다.

현재 각도(yAngle)가 있고, 경과한 프레임마다
회전한 각도 (deltaTime * rotateSpeed)가 있는 셈인데요.
유심히 보면 yAngle += deltaTime*rotatSpeed;로 계속 회전시켜주고 있습니다.

따라서 [희망하는 회전각]을 넣어야 한다면 전자를,
[얼마만큼 이동할지]를 넣어야 하는 경우 후자를 선택하면 됩니다.