*** 공부 방법 ***
1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처
hyrule.tistory.com
class CGameObject
- 충돌체는 CGameObject에 종속되어 해당 CGameObject의 충돌을 판정하게 될것이다.
- 한 게임오브젝트에 여러 개의 충돌체가 있을수도 있고, 충돌체가 종종 생성/제거될 일이 있으므로 여기에 맞는 자료구조를 생성해주어야 한다.
-- +참조 카운팅을 사용하여 포인터 관리의 편의를 도모한다.
< std::list<CShaerdPtr<CCollider> m_ColliderList >
< AddCollider(const std::string& Name) >
- 충돌체는 여러 모양이므로 다양한 클래스로 들어올 것이다 -> template 사용
- 성공하면 생성한 T의 포인터를 반환해주고, 실패하면 nullptr을 반환한다.
- 들어온 클래스를 동적 할당하고, 충돌체의 이름과 소유 CGameObject, 소유 CScene을 등록해 준다.
- 생성한 충돌체의 초기화를 실행시키고, 실패하면 nullptr을 반환한다.
- 과정이 완료되면 리스트에 삽입하고 주소를 반환해준다.
< Update(), PostUpdate(), Render() >
- 이제 만든 리스트를 각 메소드에서 순회를 돌며 충돌체의 Update, PostUpdate, Render 메소드를 호출한다.
- Render() 과정의 경우 ifdef를 통해 디버그 모드에서만 동작하도록 설정해 주자.
class CPlayer
- 이제 작동하는지 확인하는 차원해서 한번 생성해보자.
- 원하는 CGameObject의 초기화 단계에서 AddCollider<>() 메소드를 통해 생성해주고, SetExtent() 메소드와 SetOffset() 메소드를 통해 충돌체의 위치를 설정해 준다.
- CMonster에도 생성해 주자
- 충돌체 작동 확인
'WIN32API FrameWork > 한단계씩 직접 구현' 카테고리의 다른 글
47. 이펙트 (0) | 2022.06.01 |
---|---|
46. 충돌 처리 6 - 충돌 로직 개선 및 박스충돌 완성 (0) | 2022.05.30 |
44. 충돌 처리 4 - 사각형 충돌체 (Box Collider) (0) | 2022.05.30 |
43. 충돌 처리 3 - 충돌체 2 (0) | 2022.05.30 |
43. 충돌 처리 2 - 충돌체 1 (0) | 2022.05.30 |