WIN32API FrameWork/한단계씩 직접 구현

44. 충돌 처리 4 - 사각형 충돌체 (Box Collider)

2022. 5. 30. 14:57

http://hyrule.tistory.com/111 

 

*** 공부 방법 ***

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

hyrule.tistory.com

 


[ 사전 지식 ]

< HBRUSH >

- 색을 넣어서 그리고 싶을 때 사용한다.

 

< CreateSolidBrush(RGB(r, g, b)) >

- HBRUSH 변수에 넣어 사용한다. RGB 색깔에 해당하는 HBRUSH를 생성해준다.

 

< DeleteObject() >

- 사용한 HBRUSH는 소멸자에서 제거해 주어아 햔다. 

 

< FrameRect(hDC, &Rectangle, Hbrush) >
- HDC, RECT구조체, HBRUSH를 인자로 받아서 HBRUSH의 색깔로 속이 투명한 사각형을 그려낸다.


class CColliderBox

< PostUpdate() >

- 이제 설계한 충돌체 클래스들을 바탕으로 실제 충돌처리를 해 주어야 한다.

- 일단 설정한 사이즈만큼의 사각형을 offset만큼 떨어뜨려서 생성한다.

 

- 이런 식으로 만들어줘야 한다.

- 이 충돌처리 과정을 CGamoObject의 이동 처리과정(Update())이 다 끝난 후인 PostUpdate() 과정에서 해 준다.

- 주인 오브젝트의 위치 받아옴 -> 받아온 위치에 오프셋값과 너비, 높이를 더해 사각형의 Left Top과 Right Bottom을 계산하고, 이 값을 m_Info 값에 저장해놓는다.


< Render() >
- 충돌체는 실제 게임에서는 렌더링해줄 필요가 없다.

- ifdef를 사용해서 디버그 모드로 컴파일할때만 출력되도록  출력한다.

- 충돌되지 않았을 때는 초록색 테두리, 충돌되었을때는 빨간색 테두리로 출력해서 충돌 여부를 시각적으로 파악할 수 있게 해 주어야 하므로 다음의 과정을 해 주어야 한다.


flag.h

< enum class EBrushType >

- 열거체로 색깔 파레트를 만들어 준다.

- Black, Red, Green, Blue, Yellow 그리고 배열 선언을 위해 Max 정도로 정의해주면 될 듯.


class CGameManager

< HBRUSH m_Brush[] >

- 위에서 만들어둔 팔레트의 갯수 만큼 배열로 선언한다.

 

< Init() >

- 초기화 단계에서 EBrushType에 맞게 색깔을 생성하여 저장해 준다.

 

< HBRUSH GetBrush() >

- 생성된 HBRUSH를 받아올 수 있는 메소드

 

- 이제 HBRUSH를 통해 충돌체에 색깔을 표시할 수 있게 되었다.


class CColliderBox

< Render() >

- 아래 로직은 디버그 모드일 때만 작동하도록 해준다.

- 우선 기본적으로 초록색 HBRUSH를 받아온다.

- 만약 m_CollisionList가 비어있지 않다면, 어떤 물체던간에 충돌을 하고 있다는 뜻이므로 HBRUSH를 빨간색으로 바꿔준다.

- RECT 구조체를 선언하고, 충돌체의 사이즈 정보가 담겨있는 m_Info와 CCamera의 위치를 통해 실제 그려질 곳을 계산하고, 구조체에 값을 입력한다.

- FrameRect() 메소드를 통해 설정한 색깔로 사각형을 그려낸다.


GameFrameworkStepbyStep_45_Collision4_BoxCollider.zip
0.30MB

 

저작자표시 (새창열림)

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

46. 충돌 처리 6 - 충돌 로직 개선 및 박스충돌 완성  (0) 2022.05.30
45. 충돌 처리 5 - 실제 충돌체 생성 및 관리  (0) 2022.05.30
43. 충돌 처리 3 - 충돌체 2  (0) 2022.05.30
43. 충돌 처리 2 - 충돌체 1  (0) 2022.05.30
42. 충돌 처리 1  (0) 2022.05.29
'WIN32API FrameWork/한단계씩 직접 구현' 카테고리의 다른 글
  • 46. 충돌 처리 6 - 충돌 로직 개선 및 박스충돌 완성
  • 45. 충돌 처리 5 - 실제 충돌체 생성 및 관리
  • 43. 충돌 처리 3 - 충돌체 2
  • 43. 충돌 처리 2 - 충돌체 1
hyrule
hyrule
hyrule
C++ 프로그래밍 공부
hyrule
전체
오늘
어제
  • 분류 전체보기 (205)
    • C++기초 (50)
    • WIN32API FrameWork (109)
      • 한단계씩 직접 구현 (82)
      • 원본 (15)
      • 코드별 설명 개별저장(검색용) (12)
    • 자습 (21)
    • C++ TIPS (11)
    • 연습 노트 (3)
    • ETC (6)
    • DX2D StarCraft 모작 (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

hELLO · Designed By 정상우.
hyrule
44. 충돌 처리 4 - 사각형 충돌체 (Box Collider)
상단으로

티스토리툴바

개인정보

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

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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