bool m_down = sf::Keyboard::isKeyPressed(sf::Keyboard::Key::M);
bool up_down = sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Up);
bool down_down = sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Down);
bool left_down = sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Left);
bool right_down = sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Right);
Этот код в основном единственный соответствующий код.
Когда я держу некоторые другие клавиши в то же время, что и M, и клавишу [n] со стрелкой [s], кажется, что при нажатии m возвращается false. (Хотя это так)
У меня нет кода, управляющего им, взламывающего и т. Д., И я хотел бы получить представление о том, почему это происходит, если возможно, и как это исправить.
Если нет способа исправить это, то можете ли вы посоветовать мне лучший способ переделать эту функцию на моей стороне, используя систему событий?
Согласно комментариям, эта ссылка здесь объясняет, что есть внутреннее ограничение клавиатуры. Большинство клавиатур могут регистрировать только определенное количество нажатий клавиш в любой момент времени и игнорировать любые последующие нажатия клавиш, пока вы не отпустите одну или несколько текущих клавиш. Это не относится к клавишам-модификаторам (таким как Ctrl, Alt и Shift), так как эти клавиши обрабатываются особым образом (так как они предназначались для использования в тандеме с другими клавишами).
Других решений пока нет …