목표 : 키 입력을 프레임 단위로 해석해서 게임 로직에 전달할 수 있게 처리
1. Input 클래스 추가
// 이전 프레임에는 키가 안눌렸다가 현재 프레임에 눌렸을때 1번만 호출
bool GetKeyDwon(int keyCode);
// 이전 프레임에는 키가 눌렸다가 현재 프레임에 키 입력이 해제되면 1번만 호출
bool GetKeyUp(int keyCode);
// 현재 프레임에 입력이 눌리면 계속 호출.
bool GetKey(int keyCode);
static Input& Get();
KeyState 구조체 생성
// 키 입력 상태 구조체.
struct KeyState
{
// 현재 프레임에 키가 눌렸는지.
bool isKeyDown = false;
// 이전 프레임에 키가 눌렸는지.
bool wasKeyDown = false;
};
입력 수집방식(Windows API)
Input::ProcessInput():
keyStates[ix].isKeyDown = (GetAsyncKeyState(ix) & 0x8000) != 0;
의미:
- GetAsyncKeyState의 최상위 비트로 눌림 여부 확인
- 0~255 전체 키를 매 프레임 스캔
2. Engine 클래스
ProcessInput : 현재 프레임에 어떤 키값이 입력됐는지 업데이트처리하고
SavePreviousInputStates : 다음 프레임에 이전 프레임에 어떤 키가 입력되어있는지 처리
void Engine::ProcessInput()
{
assert(input);
input->ProcessInput();
}
void Engine::SavePreviousInputStates()
{
assert(input);
input->SavePreviousStates();
}
'엔진프레임워크 만들기' 카테고리의 다른 글
| C++ 엔진프레임워크 - 2 레벨, 엑터 구성 (0) | 2026.08.24 |
|---|---|
| C++ 엔진프레임워크 - 1 (0) | 2026.08.20 |





























