Вот моя попытка перемещения простой треугольник, нарисованный DirectX 11/C++:Как я прочитал ввод с клавиатуры в C++
int DrawAndMovePlayer(Renderer renderer)
{
Triangle triangle1(renderer);
float p1, p2, p3, p4, p5, p6;
float x, y;
x = 0.0f;
y = 0.0f;
if (GetAsyncKeyState(0x58))
{
x = 1.0f;
}
//top
p1 = x + 0.0f;
p2 = y + 0.05f;
//Bottom Right
p3 = x + 0.05f;
p4 = y - 0.05f;
//Top
p5 = x - 0.05f;
p6 = y - 0.05f;
//Triangle triangle2(renderer);
triangle1.draw(renderer,p1,p2,p3,p4,p5,p6);
//triangle2.draw(renderer, -0.5f);
return 0;
}
Я попытался getch()
функцию и функцию GetAsyncKeyState()
, однако, треугольник никогда изменяет свою позицию. Треугольник нарисован вокруг центральной точки (x
, y
).
Действительно ли треугольник не перемещается? Расстояние перемещения 1 может быть слишком маленьким, чтобы видеть. – MikeCAT
LSB возвращаемого значения [function 'GetAsyncKeyState'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms646293%28v=vs.85%29.aspx) имеет другую информацию, поэтому вы должны использовать 'GetAsyncKeyState (0x58) & 0x8000', чтобы увидеть, нажата ли клавиша. – MikeCAT
Вы можете использовать класс '' Keyboard'' в [DirectX Tool Kit] (https://github.com/Microsoft/DirectXTK). См. [Учебник] (https://github.com/Microsoft/DirectXTK/wiki/Mouse-and-keyboard-input). –