- CObject 의 파생 클래스 CPlayer 와 CMonster
// CObject.h
...
virtual void update() PURE;
virtual void render(HDC hDC);
update 를 pure function 으로 만들어서 CObject 를 abstract 클래스로 만들어줌. render 도 virtual 함수로 만들어주고...
// CPlayer.cpp
void CPlayer::update()
{
Vector2 pos = GetPos();
// 오브젝트의 상태 업데이트 로직 구현.
if (CKeyMgr::GetInstance()->GetKeyState(KEY::RIGHT) == KEY_STATE::HOLD)
{
pos.x += 200.f * DELTATIMEF;
}
if (CKeyMgr::GetInstance()->GetKeyState(KEY::LEFT) == KEY_STATE::HOLD)
{
pos.x -= 200.f * DELTATIMEF;
}
if (CKeyMgr::GetInstance()->GetKeyState(KEY::UP) == KEY_STATE::HOLD)
{
pos.y -= 200.f * DELTATIMEF;
}
if (CKeyMgr::GetInstance()->GetKeyState(KEY::DOWN) == KEY_STATE::HOLD)
{
pos.y += 200.f * DELTATIMEF;
}
SetPos(pos);
}
입력에 따른 움직임 처리는 Player 클래스에서 처리.
void CMonster::update()
{
Vector2 pos = GetPos();
pos.x += (m_bRight ? 1.f : -1.f) * m_fSpeed * CTimeMgr::GetInstance()->GetDeltaTimeF();
if (Vector2::distanceSquared(m_vCenterPos, pos) >= m_fMoveDistance * m_fMoveDistance)
{
// 중심 위치에서 이동 거리를 초과했을 때, 방향 전환 및 위치 보정.
pos = (m_vCenterPos + (m_bRight ? Vector2::right : Vector2::left) * m_fMoveDistance);
m_bRight = !m_bRight;
}
SetPos(pos);
}
몬스터는 혼자서 좌우로 움직이도록 구현해줌.
-CMissile 클래스.
// CMissile.h
#pragma once
#include "CObject.h"
class CMissile : public CObject
{
private:
Vector2 m_vDirection;
float m_fSpeed;
public:
void SetDirection(const Vector2& dir) { m_vDirection = dir.normalized(); }
void SetSpeed(float speed) { m_fSpeed = speed; }
public:
virtual void update() override;
virtual void render(HDC hDC) override;
...
};
간단한 클래스. 그냥 Player 에서 입력하면 발사되는 투사체.
void CPlayer::CreateMissile()
{
CMissile* pMissile = new CMissile();
pMissile->SetPos(GetPos() + m_vMissileOffset);
pMissile->SetSize(Vector2(10.f, 30.f));
pMissile->SetDirection(Vector2::up);
pMissile->SetSpeed(300.f);
CSceneMgr::GetInstance()->GetCurScene()->AddObject(pMissile, GROUP_TYPE::MISSILE);
}
Player 측에서 생성하고 현재 Scene 에 추가해준다.
'Win32 api' 카테고리의 다른 글
| Win32 api 강의 23화. (0) | 2025.09.16 |
|---|---|
| Win32 api 강의 21 - 22화. (0) | 2025.09.16 |
| Win32 api 15 - 16화. (0) | 2025.09.14 |
| Win32 api 강의 13 - 14화. (0) | 2025.09.14 |
| Win32 api 강의 12화. (0) | 2025.09.13 |