*** 공부 방법 ***
1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처
hyrule.tistory.com
class CGameObject;
class CCharacter;
< virtual float InflictDamage(float Damage) >
- 가상함수로 선언하고, CCharacter에서도 재정의를 해 준다.
- Update(), PostUpdate(), Render()과 마찬가지로 부모의 메소드를 호출한다.
- 일단 CCharacter과 CGameObject에는 메소드를 만들되, 아무 계산도 하지 않는다.
-- 나중에 혹시나 방어력 등의 스탯이 적용되어 데미지 계산이 필요하게 되면, 여기에 추가하면 된다.
class CPlayer;
class CMonster;
< virtual float InflictDamage(float Damage) >
- 실제 데미지 적용은, 데미지 시스템이 필요한 CGameObject들에만 재정의를 통해 적용시킨다.
- 이렇게 해 주면, 데미지를 입지 않는 벽 등에 대해서는 아무런 효과가 없지만, 데미지를 입어야 하는 대상은 재정의된 함수를 통해 데미지를 입힐 수 있게 된다.
- float을 리턴해주는 이유는, 나중에 데미지 표기를 하기 위해서이다.
< float m_HP >
- 체력 감소가 필요한 캐릭터들은, 체력 변수를 추가한다.
class CBullet
< float m_Damage >
- 데미지를 입히는 객체는 데미지 변수를 추가한다.
- InflictDamage() 메소드에 이 값을 넣어서 충돌한 상대방에게 전달하면, 데미지를 입는 대상이라면 충돌했을 때 그만큼의 데미지가 들어가게 될 것이다.
< CollisionBegin() >
- 충돌이 시작되면, 충돌한 '대상' 오브젝트의 주소로 접근하여 InflictDamage() 메소드를 호출한다.
- 만약 체력이 없는 적이면 재정의되지 않은 InflictDamage()를 호출하여 아무 반응이 없을 것이고,
- 체력이 있는 적이면
- 몬스터에게 체력을 설정해주고, Inflict() 메소드를 만들어 준 뒤 실행하면...
'WIN32API FrameWork > 한단계씩 직접 구현' 카테고리의 다른 글
52. 박스-원 충돌 (0) | 2022.06.02 |
---|---|
51. 원형 충돌 (0) | 2022.06.02 |
48. 스케일 조정 (0) | 2022.06.01 |
47. 이펙트 (0) | 2022.06.01 |
46. 충돌 처리 6 - 충돌 로직 개선 및 박스충돌 완성 (0) | 2022.05.30 |