개발 이슈 2018. 8. 21. 20:28
728x90


이거 은근히 헷갈리는 부분이다,


윈도우에서,

마우스가 오른쪽으로 움직였는지를 알아내려면, 

::GetCursorPos() (윈도우 함수, 이름은 틀렸을수 있다) 함수로 가져온 값에 

이전 마우스값을 빼고, 남은 값으로 

오른쪽, 왼쪽, 위쪽, 아래쪽 으로 마우스가 움직였는지를 알아낼수 있다

아주 쉽다


그런데, 


이때!


이렇게 구한, 마우스 움직임값으로 카메라를 회전시켜 준다고 해보자,

(보통은 이렇게 작업들을 하겠지)



//카메라를 우측으로 회전시키는 부분

_pCam->_mvTargetAngle.y += ( MouseMove.x) * fSensi * fTick;



카메라 앵글은 라디안값으로 사용한다,

위의 코드에서 fTick 을 곱하는 것은 필요할까??


우리는 거의 모든 게임 함수들에서 fTick 을 사용한다,

너무나도 익숙하고, 당연히 필요한 것이기 때문에,

늘상 사용하고는 하는데,


마우스값에도 역시 사용하는 것이 맞을까?


......



결론적으로는

(테스트한바로는)

틱을 적용하면, 카메라 회전할때 튀는 현상이 많이 생긴다는 것

(특히, 프레임이 급변할때)


틱을 사용하지 않으면, 좀더 깔끔하게 회전한다

(프레임이 급변할때도)


WM_MOUSEMOVE 는

마우스 움직임에 따라 정확한 값을 돌려준다,


이값은 우리 게임의 프레임 상태와 상관없는 정확한 값이니,

이값을 그대로 쓰면, 내가 손으로 움직인만큼 정확한 카메라 회전이

되는것 같다,

게임 프레임이 급변하는 구간에서도, 카메라 회전값은

내가 움직인만큼 그대로 적용되는 것,


그러니, 이 값에다가

틱을 적용하면,


프레임이 빨라지면, 틱값은 작아지니, 좀더 느리게 움직이고,

프레임이 느려지면, 틱값은 커지니, 팍 하고 크게 움직이게 된다

프레임 급변구간에서는

이렇게 값이 왔다갔다하면서, 카메라 회전이 마구 튀게 되는것 같다


뭐!

일단 이런듯!



728x90

'개발 이슈' 카테고리의 다른 글

무한 배경  (0) 2019.11.18
눈의 착시와 인지의 착각  (0) 2019.10.11
게임 디자인 원리 (book)  (0) 2018.12.18
볼륨 렌더링  (0) 2016.09.29
셰이더 - Volumetric Light  (0) 2014.04.28
posted by BK dddDang
: