728x90
if (GetAsyncKeyState(VK_LEFT) & 0x8000) 를 이용하여 키보드 입력값을 받을 수 있다.
키보드 입력값은 GetAsyncKeyState(키값) 을 넣어주면된다.
키값은
List of Virtual Key Codes (kbdedit.com)
List of Virtual Key Codes
List of Virtual Key Codes Following is a full list of VK codes that can be assigned to physical keys ("scan codes") in the Low-level editor. The list is divided in two categories: "Mappable" codes, to which Unicode characters can be assigned in the High-le
www.kbdedit.com
여기 정리되어 있다.
if (GetAsyncKeyState(0x57) & 0x8000) // W
m_pBullet->emplace_back(Create_Bullet('w'));
if (GetAsyncKeyState(0x41) & 0x8000) // A
m_pBullet->emplace_back(Create_Bullet('a'));
if (GetAsyncKeyState(0x53) & 0x8000) // S
m_pBullet->emplace_back(Create_Bullet('s'));
if (GetAsyncKeyState(0x44) & 0x8000) // D
m_pBullet->emplace_back(Create_Bullet('d'));
플레이어의 Update 함수에 다음과 같이 총알을 만들고 총알에 속성 ('w', 'a', 's', 'd')의 속성을 부여하여,
Bullet 클래스에서 다음과 같이 Render 해주면 된다
void CBullet::Update()
{
if (m_ch == 'a')
m_tInfo.fX -= m_fSpeed; // 왼
if (m_ch == 'w')
m_tInfo.fY -= m_fSpeed; // 위
if (m_ch == 'd')
m_tInfo.fX += m_fSpeed; // 오
if (m_ch == 's')
m_tInfo.fY += m_fSpeed; // 아래
Update_Rect();
}
방향으로 발사가 잘 되지만,
WA를 눌렀을 때, 대각선으로 발사가 안되기 때문에
각 키를 눌렀을 때, Bullet 생성이 아니라 속도를 적용시키는 방식으로 구현하면 좋을 것 같다.
0x8000 이 값은 다음 표에 따라 바꿔 쓸 수 있다.
반환값 | 설명 |
0x0000 | 이전에 누른적이 없고 호출 시점에서 안누른 상태 |
0x8000 | 이전에 누른적이 없고 호출 시점에서 누른 상태 |
0x8001 | 이전에 누른적이 있고 호출 시점에서 안누른 상태 |
0x0001 | 이전에 누른적이 있고 호출 시점에서 누른 상태 |
728x90
'Windows API' 카테고리의 다른 글
리스타 구현 스윙 구현 (0) | 2021.06.18 |
---|---|
#라인타기 (0) | 2021.06.11 |
#몬스터 추적 (feat. 유도탄) (0) | 2021.06.10 |
# 삼각함수로 방향 전환 (0) | 2021.06.02 |
# 충돌처리 (0) | 2021.06.01 |