인프런 커뮤니티 질문&답변
Rotate와 rotation의 속도차이의 원인에 대한 질문입니다.
작성
·
649
0
_fSpeed = 10.0f;
_fYAngle += 10*_fSpeed*Time.deltaTime;
//+- 상대 회전값
transform.Rotate(new Vector3(0.0f, _fYAngle, 0.0f)); //특정 축을 기준으로 회전을 시키고 싶으면 이걸
transform.rotation = Quaternion.Euler(0.0f, _fYAngle, 0.0f); //물체의 절대적인 값
실습 도중 Rotate와 rotation에서 같은 변수를 줬는데 유니티를 실행시켜보니 회전속도에서 차이를 보이더군요.
그 이유가 뭘까 생각을 해봤는데 차이점을 찾아봤습니다.
1. Rotate는 따로 지정을 안 해주면 로컬, rotation은 월드
2.Rotate는 벡터값으로, rotation은 쿼터니엄으로 값지정
생각해봤을 때 1번 이유보다는 2번 이유때문에 차이를 보이는 것 같은데 Rotate는 바로 오일러 벡터값을 주고 rotate는 오일러 벡터값을 지정해주면 그걸 쿼터니엄으로 변환해서 준다로 생각하는데 여기서 발생하는 차이일까요?
오일러 값으로 줄 경우는 180도 이상의 각도도 인지되기 때문에 빠른 속도로 돌지만 쿼터니엄은 180도 이상은 표현 못하니 해당 회전값을 180도로 나눈 나머지 값 만큼으로만 인지를 해서 속도의 차이를 보인다고 판단했습니다.
제 결론이 맞는 걸까요?
--
추가적으로 vs2019를 사용하며 f1키를 이용해 ms 공홈에서 함수를 확인하는 걸 애용 했는데 유니티의 경우는 공홈에 접속해서 함수를 검색하는 방식을 이용하고 있습니다.
vs자체적으로 단축키를 통해 공홈에서 함수를 자동 탐색을 하는 방법이 있을까요?
퀴즈
게임 오브젝트의 이동 계산 시 Time.deltaTime 값을 곱해주는 주된 이유는 무엇일까요?
캐릭터의 최대 이동 속도를 제한하기 위해
모든 컴퓨터에서 초당 이동 거리를 일정하게 유지하기 위해
물리 엔진 계산의 정확도를 높이기 위해
오브젝트의 회전 상태에 따라 이동 방향을 결정하기 위해





