Witam, nie odświeżają mi się zmienione parametry w grze z użyciem SFML. Ustawiam np prędkość gracza na 5 i gdy zmienię potem na np 1 to prędkość się w rzeczywistości nie zmienia. Aby wprowadzić zmianę muszę zmienić typ zmiennej np float na int czy odwrotnie. Dlaczego tak się dzieje? W kodzie nie mam żadnej filozofii, która mogłaby w jakiś sposób na to wpływać. Piszę w Visual Studio 2015.
player.h
class player : public entity
{
public:
float movementSpeed = 1;
};
player.cpp
void player::update()
{
sprite.setPosition(rect.getPosition());
}
void player::updateMovement()
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
rect.move(0, -movementSpeed);
sprite.setTextureRect(sf::IntRect(counterWalking * 32, 3 * 49, 32, 49));
direction = 1;
}
}
w pętli głównej gry:
Player1.update();
Player1.updateMovement();
window.draw(Player1.sprite);
window.display();
Powyżej wrzuciłem fragmenty kodu, które się nie odświeżają po zmianie parametrów, tak samo dzieje się z innymi zmiennymi: prędkość pocisku, obrażenia zadawane przez pocisk itp.
Czy można stwierdzić dlaczego tak się dzieje? Czy może potrzebny jest cały kod? Wkleiłem tylko te istotne rzeczy, bo reszta z całością nie ma za wiele wspólnego.