首页 > 解决方案 > 使用按键事件的 SFML 精灵移动系统不起作用

问题描述

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 来说非常新,所以如果这是一个愚蠢的问题和我凌乱的代码,我们深表歉意。

标签: c++sfml

解决方案


在第一个和第二个外部中if,您可能的意思是moright = true,,moleft = true与 相同= false

当前==写在那里的只是将moright(或moleft)与true(在第一if对中)或与false(在第二对中)进行比较,而不更改任何值。


推荐阅读