Система перемещения спрайтов SFML с использованием событий нажатия клавиш не работает - PullRequest
0 голосов
/ 31 января 2020
while (window.pollEvent(event)) {
    if (event.type == Event::KeyPressed) {
        if (event.key.code == Keyboard::D)
            moright == true;
        if (event.key.code == Keyboard::A)
            moleft == true;
    }

    if (event.type == Event::KeyReleased) {
        if (event.key.code == Keyboard::D)
            moright == false;
        if (event.key.code == Keyboard::A)
            moleft == false;
    }

    if (moright == true) {
        sprite.move(sf::Vector2f(5.f, 0.f));
        moright == false;
    }

    if (event.type == sf::Event::Closed)
        window.close();
}

Работает без ошибок, но спрайт не перемещается, когда я нажимаю D. Очень плохо знаком с c ++ и sfml, поэтому извиняюсь, если это глупый вопрос и за мой грязный код.

1 Ответ

2 голосов
/ 31 января 2020

В первом и втором внешнем if вы, вероятно, имели в виду moright = true, moleft = true, то же самое с = false.

. ==, написанное в настоящее время там, просто сравнивает moright (или moleft) с true (в первой паре if) или с false (во второй) без изменения каких-либо значений.

...