Problem mit SFML View



  • Hey Leute, ich habe folgendes Problem:

    Ich habe eine Basisklasse für ein Objekt, welches man durch Klicken verändern kann. Je nachdem ob man weiter oben oder eher weiter unten klickt, klickt man auf das FloatRect Up bzw. Down. Der Code lautet hier erstmal so:

    if(Up.contains(static_cast<sf::Vector2f>(sf::Mouse::getPosition(*rw))))
    	{
    		SetCursor(LoadCursor(NULL, IDC_HAND));
    
    		if(sf::Mouse::isButtonPressed(sf::Mouse::Left) && canClick.getElapsedTime().asSeconds() > 0.2)
    		{
    
    				State--;
    
    			sound.play();
    			canClick.restart();
    		}
    	}
    

    bzw:

    if(Down.contains(static_cast<sf::Vector2f>(sf::Mouse::getPosition(*rw))))
    	{
    		SetCursor(LoadCursor(NULL, IDC_HAND));
    
    		if(sf::Mouse::isButtonPressed(sf::Mouse::Left) && canClick.getElapsedTime().asSeconds() > 0.2)
    		{
    
    				State++;
    
    			sound.play();
    			canClick.restart();
    		}
    	}
    

    Die Position der FloatRects wird ständig geupdatet:

    Up = sf::FloatRect(Sprite.getPosition().x + 9, Sprite.getPosition().y + 1, 13 , 9);
    	Down = sf::FloatRect(Sprite.getPosition().x + 9 , Sprite.getPosition().y + 16 , 13 , 9);
    

    Dort wo ich die Objekte dann mittels dieser Basisklasse erstelle, habe ich auserdem eine sf::View, umd mit W, A, S, D die Kamera zu bewegen. Wenn Ich jetzt meine Kamera um 10 Pixel nach unten bewege, muss ich auch 10 Pixel weiter unten Klicken, um das Objekt zu verändern. Wie kann ich dieses Problem lösen?

    Schonmal Danke im voraus 🙂



  • Indem du FloatRect.Top jeweils um 10 verschiebst? Das setzt natürlich voraus, dass du nicht irgendwelche magischen Konstanten übergibst, sondern die Werte in Variablen speicherst, die du dann manipulieren kannst.
    Oder hab ich dein Problem falsch verstanden?


Anmelden zum Antworten