강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

강동훈님의 프로필 이미지
강동훈

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Rotation

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자체적으로 단축키를 통해 공홈에서 함수를 자동 탐색을 하는 방법이 있을까요?

퀴즈

56%나 틀려요. 한번 도전해보세요!

게임 오브젝트의 이동 계산 시 Time.deltaTime 값을 곱해주는 주된 이유는 무엇일까요?

캐릭터의 최대 이동 속도를 제한하기 위해

모든 컴퓨터에서 초당 이동 거리를 일정하게 유지하기 위해

물리 엔진 계산의 정확도를 높이기 위해

오브젝트의 회전 상태에 따라 이동 방향을 결정하기 위해

답변 2

0

강동훈님의 프로필 이미지
강동훈
질문자

답변 감사합니다.

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

http://www.devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=83685

함수에 대한 의문이 생기면 무조건 구글에 가서 검색을 해보시면 됩니다.
유니티는 워낙 많은 사람들에 사용하기에 99% 답변이 있습니다.

강동훈님의 프로필 이미지
강동훈

작성한 질문수

질문하기