43. 충돌 처리 3 - 충돌체 2
*** 공부 방법 ***
1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처
hyrule.tistory.com
[코드 문제 수정]
GameInfo.h
< struct CollisionProfile >
- 생성자에서 Enable의 기본값을 true로 설정
- 일단 가장 기본이 되는 박스충돌부터 구현한다.
- 박스 충돌이 일어난 상황을 가정해보자.
-- 이 상황에서는 빨간 사각형의 LeftTop.x가 파란 사각형의 RightBottom.x보다 작고
LeftTop.y가 RightBottom.y보다 크다.
class ColliderBox
- CCollider을 상속받는 박스 충돌체 클래스. 마찬가지로 friend class로 CGameObject를 추가하고 다른 접근은 모두 차단한다.
- 기본 틀은 CCollider을 따라갈 것이기 때문에 코드를 일단 긁어와서 바꿔 준다.
- 추상 클래스가 아니므로 순수가상함수 선언부분은 제거한다.
- Init(), Update(), PostUpdate(), Render() 메소드에서는 부모의 메소드도 호출해준다.
-- Init()의 경우 부모의 Init() 메소드가 정상적으로 호출되었는지 확인하고 실패했으면 false를 리턴한다.
< CColliderBox() > 생성자
- CRef의 SetTypeID() 메소드를 실행시킨다.
- m_ColliderType을 박스로 설정해준다.
GameInfo.h
< struct BoxInfo >
- Vector2타입의 LT, RB 값을 가지고 있는다 -> Box 충돌체의 모양을 저장
class CColliderBox
< BoxInfo m_BoxInfo >
- 위에서 만든 구조체를 변수로 저장
- 위의 구조체 정보를 받아오는 GetInfo() 메소드도 만들어준다.
< float m_Width >
< float m_Height >
- 사이즈를 저장해놓을 변수. 생성자에서 기본값으로 100으로 설정해준다.
< void SetExtent() >
- 이 메소드를 통해 위의 변수들을 설정해준다
- 충돌체 구조 준비는 끝
- 이제 CScene에서 이 충돌체를 생성하고, 반복문을 통해 전부 순회를 돌면서 충돌했는지를 확인해주면 된다.