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