4번 진행상황중, 마우스의 움직임이 너무 맘에 안들었다.
해골책에서 제공해주는 방법에는 무조건 마우스 정가운데만 커서가 이동하게끔하여 연산했는데
이것은 다른 인터페이스를 사용하는데 조금 치명적이면서 불편했다.
그래서 http://codesampler.com/ 에서 봤었던 소스를 참고하여(이건 윈도프로시져에서 가지고 놀지만..)
해보았고 이제 맘에든다. codesampler은 참 좋은 예제소스로 많이 도와주는것같다.
VOID CGameApp::ProcessMouse()
{
static POINT OldMousePos;
POINT CurrentMousePos;
FLOAT fDelta = 0.001f; //마우스의 민감도
static BOOL bMousing = FALSE; //마우스클릭시의 움직임
if(GetAsyncKeyState(VK_LBUTTON) & 0x8000)
{
if(!bMousing)
{
GetCursorPos(&CurrentMousePos);
OldMousePos = CurrentMousePos;
bMousing = TRUE;
}
}
else bMousing = false;
if(bMousing)
{
SetCursor( NULL ); // 마우스를 나타나지 않게 않다.
GetCursorPos(&CurrentMousePos);
INT dx = CurrentMousePos.x - OldMousePos.x; // 마우스의 변화값
INT dy = CurrentMousePos.y - OldMousePos.y; // 마우스의 변화값
m_pCamera->RotateLocalX( dy * fDelta ); // 마우스의 Y축 회전값은 3D world의 X축 회전값
m_pCamera->RotateLocalY( dx * fDelta ); // 마우스의 X축 회전값은 3D world의 Y축 회전값
OldMousePos.x = CurrentMousePos.x;
OldMousePos.y = CurrentMousePos.y;
D3DXMATRIX* pmatView = m_pCamera->GetViewMatrix(); // 카메라 행렬을 얻는다.
m_pD3DDevice->SetTransform( D3DTS_VIEW, pmatView ); // 카메라 행렬 셋팅
}
}
'프로그래밍 > 맵툴(추가포트폴리오준비)' 카테고리의 다른 글
메인화면 지형.. (0) | 2009.12.17 |
---|---|
대략적으로 3 ~ 4주간 보류!! irrlicht쪽으로 신경을쓰기위해서 (0) | 2009.09.03 |
4. FPS적용 및 지형생성 (0) | 2009.08.30 |
스카이돔 괜찮은 모델링 (0) | 2009.08.28 |
3. 스카이박스, 카메라 (0) | 2009.08.27 |