c ++ sfml применяется только при нажатии кнопки - PullRequest
0 голосов
/ 26 сентября 2018

У меня проблема с тем, что мой персонаж продолжает работать, когда я отпускаю кнопку LShift

Как я могу сбросить скорость, когда кнопка отпущена?

На самом деле у меня есть это:

int speed(4);
int speedSprinte(20);

if(sf::Keyboard::isKeyPressed(sf::Keyboard::LShift))
{
    keyCount++;
    speed=speedSprinte;
    std::cout<<speed<<std::endl;
} 

Я могу добавить это, но я думаю, что это можно сделать проще:

if(!sf::Keyboard::isKeyPressed(sf::Keyboard::LShift))
{
    keyCount++;
    speed=4;
    std::cout<<speed<<std::endl;
}

1 Ответ

0 голосов
/ 26 сентября 2018

Либо используйте события SFML и прослушайте sf::Events::KeyReleased (https://www.sfml -dev.org / tutorials / 2.5 / window-events.php ), либо сделайте это вручную, сохранив последнее состояние.

int speed(4);
int speedSprinte(20);
bool pressedLastTime{false};

if(sf::Keyboard::isKeyPressed(sf::Keyboard::LShift))
{
    keyCount++;
    speed=speedSprinte;
    std::cout<<speed<<std::endl;
    pressedLastTime = true;
} 
else
{
    if (pressedLastTime)
    {
        speed = 4;
        pressedLastTime = false;
    }
}
...