SFML rotacja obiektu

0

Witam!!!

Mam problem ponieważ nie wiem jak dostać się do rotacji obiektu ...
Porusza się na wszystkie strony tylko nie mogę jakoś żeby on się obracał ... tak jak wskazówki zegara tylko jak np. nacisnę D to w prawo a jak A to w lewo nie tak na maxa tylko np. 10 stopni.

Mam nadzieje że zrozumieliście ! (jestem optymistą :D)

0
#include <SFML\Graphics.hpp>

int main()
{
    sf::RenderWindow mainWnd(sf::VideoMode(800, 600, 32), "Przemieszczanie, skalowanie i obracanie sprajtów");

    sf::Texture qTexture;
    qTexture.loadFromFile("[5] img/q.png");
    sf::Sprite qSprite;
    qSprite.setTexture(qTexture);

    // ustawienie pozycji obiektu
    qSprite.setPosition(200, 100);  // lub qSprite.sePosition(sf::Vector2f(200, 100));

    // ustawienie kąta obrotu qSprite(obrazka q.png) o 60 stopni
    qSprite.setRotation(60);

    // ustawienie skali obrazka
    qSprite.setScale(1, 1);     // szerokośc bez zmian, wysokośc jest 2 razy większa
    qSprite.setScale(sf::Vector2f(0.5, 0.5));   // szerokość i wysokość są 2 razy mniejsze

    // ustawienie środka obiektu(obrazka); domyślnie lewy górny róg
    qSprite.setOrigin(64, 64);  // lub qSprite.setOrigin(sf::Vector2f(64, 64));

    while(mainWnd.isOpen())
    {
        sf::Event zdarzenie;
        while(mainWnd.pollEvent(zdarzenie))
        {
            // zamknięcie okna po prez przycisk
            if(zdarzenie.type == sf::Event::Closed)
                mainWnd.close();

            // zamknięcie okna przez ALT + F4
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::LAlt) && sf::Keyboard::isKeyPressed(sf::Keyboard::F4))
                mainWnd.close();

            // zamknięcie okna przez ESC
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
                mainWnd.close();

            // przesuwanie obrazu w prawo
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
            {
                // pobranie pozycji sprajta(q.png)
                sf::Vector2f qPosition = qSprite.getPosition();
                // można przesuwać, tylko do osiągnięcia punktu 680
                // nie wychodzimy w tedy poza scenę
                if(qPosition.x <= 660)
                    // przesunięcie sprajta o 10 w poziomie(x) i 0 w pionie(y)
                    // aktualna pozycja X + 10; aktualna pozycja Y + 0;
                    qSprite.move(10, 0);    // lub qSprite.move(sf::Vector2f(10, 0));
            }

            // przesuwanie obrazu w lewo
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
            {
                if(qSprite.getPosition().x > 128)
                    qSprite.move(-10, 0);
            }

            // przesuwanie obrazu na dół
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
            {
                sf::Vector2f qPosition = qSprite.getPosition();
                if(qPosition.y < 430)
                    qSprite.move(0, 10);
            }

            // przesuwanie obrazu w górę
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
            {
                if(qSprite.getPosition().y > 10)
                    qSprite.move(0, -10);
            }

            // obrót obrazka w lewo
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
                // obracanie obrazkiem
                qSprite.rotate(10); // lub qSprite.setRotation(qSprite.getRotation() + 10);

            // obracanie obrazka w prawo
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
                qSprite.rotate(-10);

            // czy pokręcono kółkiem myszy
            if(zdarzenie.type == sf::Event::MouseWheelMoved)
            {
                // czy do przodu(Wartość dodatnia)
                if(zdarzenie.mouseWheel.delta > 0)
                    // zwiększenie rozmiaru obrazka 2x(wysokośc * 2, szerokośc *2)
                    qSprite.scale(2, 2);    // lub qSprite.scale(sf::Vector2f(0.5, 0.5));
                                            // lub qSprite.setScale(qSprite.getScale().x * 2, qSprite.getScale().y * 3);
                else
                    // zmniejszenie rozmiaru obrazka 2x(wysokość * 0.5, szerokość * 0.5);
                    qSprite.scale(0.5, 0.5);
            }
        }
        mainWnd.clear();
        mainWnd.draw(qSprite);
        mainWnd.display();
    }
    return 0;
} 

Kod stary jak świat, ale powinien działać :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0