https://hyrule.tistory.com/111
*** 공부 방법 ***
1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처
hyrule.tistory.com
- 플레이어 클래스의 코드를 참고하여 몬스터 클래스를 생성한다.
- 화면 위아래로 움직이는 몬스터를 렌더링해보자.
- 화면 끝에 부딪히면 반대로 이동한다.
- 이미 전반적인 기능은 다 구현해놓았기 때문에 금방 만들 수 있다.
- 정말 안되겠다 싶은경우에만 코드 확인
더보기
* Monster 클래스는 게임오브젝트 안에 생성해야 한다!
//Monster.h
#pragma once
#include "../GameInfo.h"
#include "Character.h"
class CMonster : public CCharacter
{
friend class CScene;
private:
Vector2 m_Dir;
float m_Speed;
protected:
CMonster();
CMonster(const CMonster& Obj);
virtual ~CMonster();
public:
virtual bool Init();
virtual void Update(float DeltaTime);
virtual void Render(HDC hDC, float DeltaTime);
};
//Monster.cpp
#include "Monster.h"
CMonster::CMonster()
{
}
CMonster::CMonster(const CMonster& Obj):
CCharacter(Obj)
{
}
CMonster::~CMonster()
{
}
bool CMonster::Init()
{
m_Dir = Vector2(0.f, 1.f);
m_Speed = 400.f;
SetPos(1000.f, 500.f);
SetSize(100.f, 100.f);
SetPivot(0.3f, 0.7f);
return true;
}
void CMonster::Update(float DeltaTime)
{
if (m_Pos.y - (m_Size.y * m_Pivot.y) <= 0)
m_Dir *= -1.f;
else if (m_Pos.y + (m_Size.y * m_Pivot.y) >= 720)
m_Dir *= -1.f;
m_Pos += m_Dir * m_Speed * DeltaTime;
}
void CMonster::Render(HDC hDC, float DeltaTime)
{
Vector2 RenderLT = Vector2(m_Pos.x - (m_Size.x * m_Pivot.x),
m_Pos.y - (m_Size.y * m_Pivot.y));
Rectangle(hDC, (int)RenderLT.x, (int)RenderLT.y,
(int)(RenderLT.x + m_Size.x), (int)(RenderLT.y + m_Size.y));
}
* 클래스 안에서 몬스터 로직 구현을 완료했으면, CMainScene에서 생성 메소드를 등록하기만 하면 끝.
- 나머지는 알아서 자동으로 관리된다
//MainScene.cpp
bool CMainScene::Init()
{
CreateObject<CPlayer>("Player");
//이거 추가
CreateObject<CMonster>("Monster");
return true;
}
GameFrameworkStepbyStep_20_Monster.zip
1.90MB
'WIN32API FrameWork > 한단계씩 직접 구현' 카테고리의 다른 글
22. 특정 목표까지의 각도 구하기 (0) | 2022.05.21 |
---|---|
21. 총알 발사하기 / 목표물까지의 각도 구하기 (0) | 2022.05.20 |
19. Input 입력 구조 설계 2 (0) | 2022.05.20 |
18. Input 입력 구조 설계 1 (0) | 2022.05.19 |
17. Scene을 통한 최종 출력 (0) | 2022.05.18 |