Witam. Mój problem polega na tym, że zrobiłem sterowanie (tak dla przetestowania biblioteki SFML) do poruszania sprajtem. Problem polega na tym, że gdy nacisnę np. klawisz W to sprajt leci do góry (i to dobrze) ale gdy kliknę klawisz S to ten sprajt leci jeszcze do góry kilka metrów i dopiero zmienia kurs do tyłu. Podobnie jest z klawiszami A oraz D. Dołączam kod źródłowy.
#include <SFML\Graphics.hpp>
int main()
{
float position_X=0;
float position_Y=0;
sf::RenderWindow okno(sf::VideoMode(800, 600, 32), "GUI Test");
sf::Event zdarzenie;
sf::Texture tekstura;
tekstura.loadFromFile("Test.png");
sf::Sprite sprajt;
sprajt.setTexture(tekstura);
sf::Font czcionka;
czcionka.loadFromFile("arial.ttf");
sprajt.setPosition(400, 300);
while(okno.isOpen())
{
while(okno.pollEvent(zdarzenie))
{
if(zdarzenie.type == sf::Event::Closed)
{
okno.close();
}
if(zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::W)
{
sprajt.move(position_X=0, position_Y--);
}
if(zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::S)
{
sprajt.move(position_X=0, position_Y++);
}
if(zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::A)
{
sprajt.move(position_X--, 0);
}
if(zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::D)
{
sprajt.move(position_X++, 0);
}
okno.draw(sprajt);
okno.display();
okno.clear();
}
}
}
PS. Wesołych i spokojnych Świąt życzę wszystkim :).