Используйте освобождение ключа в библиотеке SFML C#
Я пытаюсь написать код с использованием библиотеки SFML, когда я нажимаю клавишу, я меняю переменную bool. Проблема в том, что я использую нажатие клавиш, и я не знаю, как реализовать отпускание клавиш, которое работает только 1 раз x, и это то, что я пытаюсь реализовать, потому что нажатие клавиш влияет на многократное изменение переменной все время.
if (Keyboard.IsKeyPressed(Keyboard.Key.A))
{
values[0] = !values[0];
}
if (Keyboard.IsKeyPressed(Keyboard.Key.S))
{
values[1] = !values[1];
}
if (Keyboard.IsKeyPressed(Keyboard.Key.D))
{
values[2] = !values[2];
}
Спасибо
1 ответ
Я думаю, что вы можете использовать Window.KeyPressed и Window.KeyReleased и сохранить, какая клавиша была нажата и отпущена
private Dictionary<Keyboard.Key, bool> keysArePressed = new Dictionary<Keyboard.Key, bool>
{
{Keyboard.Key.A, false},
{Keyboard.Key.S, false},
{Keyboard.Key.D, false}
};
// Key
Window.KeyPressed += OnKeyPressed;
Window.KeyReleased += OnKeyReleased;
public void OnKeyPressed(object sender, KeyEventArgs e)
{
if (e.Code == Keyboard.Key.A && !keysArePressed[Keyboard.Key.A])
{
Console.WriteLine("A pressed");
keysArePressed[Keyboard.Key.A] = true;
}
}
public void OnKeyReleased(object sender, KeyEventArgs e)
{
if (e.Code == Keyboard.Key.A)
{
Console.WriteLine("A released");
keysArePressed[Keyboard.Key.A] = false;
}
}