반응형
앞서 공부하고 정리한 내용은 무료 배포된 유튜브 "얌얌코딩"님의 강의를 시청한 후임을 밝힙니다.
얌얌코딩 (게임 개발)
어려운 게임 개발을 쉽게 배우는 방법!
www.youtube.com
WASD 방향 입력 받기
void lkb::Input::Update()
{
for (size_t i = 0; i < mKeys.size(); i++)
{
// 키가 눌림
if (GetAsyncKeyState(ASCII[i]) & 0x8000) {
if (mKeys[i].bPressed == true) {
mKeys[i].state = eKeyState::Pressed;
}
else {
mKeys[i].state = eKeyState::Down;
}
mKeys[i].bPressed = true;
}
// 키가 안눌림
else {
// 이전 프레임에 눌려져 있었다. up
if (mKeys[i].bPressed == true) {
mKeys[i].state = eKeyState::Up;
}
// 이전 프레임에도 안눌려져 있었다. None
else {
mKeys[i].state = eKeyState::None;
}
mKeys[i].bPressed = false;
}
}
}
- mKeys라는 배열 안에는 알파벳이 모두 들어가 있는 사용자 정의 class인 Key가 들어가 있다.
- Key에는 boolean값과 state값, 눌린 eKeyCode 값이 들어가 있다.
- 동시에 여러 키가 바인딩 되는 경우가 있을 수 있다 (대각선 움직임 방향 같은 경우)
- 그런 경우를 대비해 모든 배열을 루프하며 바인딩 된 키를 찾아주어야 한다.
int ASCII[(UINT)eKeyCode::End] =
{
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P',
'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L',
'Z', 'X', 'C', 'V', 'B', 'N', 'M',
VK_LEFT, VK_RIGHT, VK_DOWN, VK_UP
};
- ASCII 배열을 선언하여 모든 경우의 수를 넣어준다.
- 알파벳 키 바인딩 외에도 방향키 4개, MK_LBUTTON과 같은 마우스 좌클릭 신호들을 넣어서 확인해 줄 수 있다!
반응형
'게임 엔진 개발' 카테고리의 다른 글
[게임 엔진 개발] - 더블버퍼링 기법 (화면 그리기) (1) | 2024.07.01 |
---|---|
[게임 엔진 개발] - QueryPerformanceFrequency / QueryPerformanceCounter (1) | 2024.07.01 |
[게임 엔진 개발] enum class & static 변수 선언 (0) | 2024.06.27 |
[게임 엔진 개발] 정적라이브러리 프레임워크 구성 (0) | 2024.06.26 |
[게임 엔진 개발] DC란 무엇인가? (1) | 2024.06.25 |