본문 바로가기
카테고리 없음

캐릭터 움직이기 (GetAsyncKeyState 함수 사용법)

by kangs' tong 2023. 12. 6.

캐릭터 움직이기 (GetAsyncKeyState 함수 사용법)

1. GetAsyncKeyState 함수란?

GetAsyncKeyState 함수는 Windows 운영체제에서 사용자의 입력을 받아오는 함수로써, 특정 키가 눌려있는지 여부를 체크할 수 있습니다. 이를 통해 캐릭터의 움직임을 제어할 수 있습니다.

2. GetAsyncKeyState 함수의 사용법

GetAsyncKeyState 함수는 Windows API인 user32.dll에서 제공되며, 아래와 같은 형태로 사용됩니다.

SHORT WINAPI GetAsyncKeyState(
  int vKey
);
  • vKey: 검사하고자 하는 가상 키 코드 값을 전달합니다. 예를 들어, A 키의 가상 키 코드는 0x41입니다. (키 코드 참고 링크)

함수는 두 가지 반환값을 가집니다.

  • 0x8000(32768): 키가 현재 눌려있음을 나타냅니다. (하이비트가 설정되어 있음)
  • 0: 키가 현재 눌려있지 않음을 나타냅니다.

3. 예제: WASD 키를 사용한 캐릭터 이동

#include <iostream>
#include <Windows.h>

int main()
{
    while (1)
    {
        if (GetAsyncKeyState('W') & 0x8000)
        {
            std::cout << "W 키가 눌렸습니다." << std::endl;
            // 캐릭터를 위로 이동시키는 코드 추가
        }

        if (GetAsyncKeyState('A') & 0x8000)
        {
            std::cout << "A 키가 눌렸습니다." << std::endl;
            // 캐릭터를 왼쪽으로 이동시키는 코드 추가
        }

        if (GetAsyncKeyState('S') & 0x8000)
        {
            std::cout << "S 키가 눌렸습니다." << std::endl;
            // 캐릭터를 아래로 이동시키는 코드 추가
        }

        if (GetAsyncKeyState('D') & 0x8000)
        {
            std::cout << "D 키가 눌렸습니다." << std::endl;
            // 캐릭터를 오른쪽으로 이동시키는 코드 추가
        }

        Sleep(10); // 입력 체크 간격
    }

    return 0;
}

위 예제는 W, A, S, D 키를 사용하여 캐릭터를 이동시키는 예제입니다. GetAsyncKeyState 함수를 사용하여 키 입력을 체크하고, 그에 따른 움직임을 구현할 수 있습니다. 해당 키가 눌렸을 때 수행하고 싶은 코드를 주석으로 표시한 부분에 추가하면 됩니다.

마무리

GetAsyncKeyState 함수를 이용하면 Windows에서 특정 키가 눌렸는지 여부를 체크할 수 있습니다. 이를 활용하여 캐릭터의 움직임을 제어할 수 있으며, 예제에서는 WASD 키를 사용한 캐릭터 이동을 구현한 예제를 살펴보았습니다.

댓글