WIN32API FrameWork/한단계씩 직접 구현

53. 마우스

2022. 6. 3. 00:24

http://hyrule.tistory.com/111 

 

*** 공부 방법 ***

1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처

hyrule.tistory.com

 


[ 사전 지식 ]

POINT PTMouse;

GetCursorPos(&PTMouse);

ScreenToClient(hWnd, &PTMouse);

- POINT: 구조체. (long)x, (long)y 를 들고 있는 단순한 구조체이다. 마우스의 좌표는 이 구조체에 받는다.

- GetCursorPos(&PTMouse): 마우스의 '스크린 좌표계' 를 받아온다. 모니터의 맨 왼쪽 위 부분을 0,0으로 하는 좌표값이다.

- ScreenToClient(hWnd, &PTMouse): 받아온 '스크린 좌표계'를 윈도우 창 클라이언트 영역의 좌상단을 0,0으로 변환해준다.


class CInput

 < Vector2 m_MousePos >

- 윈도우 창에서의 위치

< Vector2 m_MouseWorldPos >

- 게임 공간에서의 마우스 위치

<Vector2 m_MouseMove >

- 마우스의 이동량

 

< Init() -> Init(HWND hWnd) >

< m_hWnd >

- CInput의 Init 함수에서 윈도우 핸들을 미리 받아놓는다. ( < ScreenToClient() > 함수 사용을 위해서 )

 

< MouseUpdate() >

- 지난번에 선언만 해놓고 냅뒀던 메소드

- 여기서 마우스 포인터의 좌표를 구해준다.

- 새로 마우스의 좌표값을 받아오면, 이 좌표값을 m_MousePos에 갱신하기 전에 이동량을 먼저 구해준다.(갱신 전의 m_MousePos에는 이전 마우스의 좌표값이 들어있을 것이므로)

 

< ComputeWorldPos(const Vector2& CamPos) > 

- 마우스 포인터의 좌표를 다 구했다면, 클라이언트 영역 기준 좌표를 얻어왔을 것이다.

- 이 값에 카메라의 위치값만큼을 더해 주면, 게임 월드 상에서의 좌표가 될 것이다.

-- 카메라의 좌표를 사용하므로, 반드시 카메라의 좌표가 업데이트 된 이후에 업데이트 되어야 한 프레임 늦게 업데이트 되는 일이 없어질것이다.

--- 그러므로 호출할 메소드를 하나 만들어서 카메라의 업데이트 과정이 끝나고 나서 호출할 수 있게 해 준다.

- 카메라의 좌표값을 받아와서, 마우스 커서의 위치에 더해서 m_MouseWorldPos에 저장한다.

 

 


 

class CCamera

- 업데이트 순서도 게임 진행에 많은 영향을 미치므로, 정리해 줄 필요가 있다.

- 카메라의 업데이트 순서도 약간 바꿔줄 필요가 있다.

 

- 우선, 카메라의 상태 업데이트 호출은 현재 CScene::PostUpdate()의 가장 마지막 부분에서 진행되고 있다.

-- 이를 CScene::Update()의 마지막 부분으로 좀 떙겨 오자.

 

- 또한, 카메라의 Update() 마지막 부분에서 CInput::ComputeWorldPos()를 호출하여 마우스의 월드 위치를 업데이트할 수 있도록 해 주자.


GameFrameworkStepbyStep_53_Mouse_1.zip
0.31MB

저작자표시 (새창열림)

'WIN32API FrameWork > 한단계씩 직접 구현' 카테고리의 다른 글

55. 사운드  (0) 2022.06.03
54. 마우스 충돌 - 픽셀 충돌  (0) 2022.06.03
52. 박스-원 충돌  (0) 2022.06.02
51. 원형 충돌  (0) 2022.06.02
50. 데미지  (0) 2022.06.02
'WIN32API FrameWork/한단계씩 직접 구현' 카테고리의 다른 글
  • 55. 사운드
  • 54. 마우스 충돌 - 픽셀 충돌
  • 52. 박스-원 충돌
  • 51. 원형 충돌
hyrule
hyrule
hyrule
C++ 프로그래밍 공부
hyrule
전체
오늘
어제
  • 분류 전체보기 (205)
    • C++기초 (50)
    • WIN32API FrameWork (109)
      • 한단계씩 직접 구현 (82)
      • 원본 (15)
      • 코드별 설명 개별저장(검색용) (12)
    • 자습 (21)
    • C++ TIPS (11)
    • 연습 노트 (3)
    • ETC (6)
    • DX2D StarCraft 모작 (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • Tistory
  • notion
  • 스타크래프트
  • C++
  • Windows 11
  • hello

최근 댓글

최근 글

hELLO · Designed By 정상우.
hyrule
53. 마우스
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.