Bonjour, je suis debutant en c++ et en sfml.
Je cherche à créer un T-rpg iso et pour l'instant je fais des test pour découvrir les possibilités de la sfml.
Je cherche à faire une animation simple : toute les 2 secondes un sprite change de texture.
Le sprite s'affiche bien mais ne change pas de texture.
J'aimerais de l'aide pour savoir pourquoi ce que j'ai fais ne fonctionne pas
Mon code:
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
sf::RenderWindow window(sf::VideoMode(1280, 720,32), "SFML works!");
window.setVerticalSyncEnabled(true);
sf::Color alpha(250,100,250);
sf::Color fond (128,225,255,255);
sf::Texture background;
if (!background.loadFromFile("background.png"))
return -1;
sf::Sprite back;
back.setTexture(background);
sf::Image sniper1;
if (!sniper1.loadFromFile("testamod.png"))
return -1;
sniper1.createMaskFromColor(alpha);
sf::Texture snip1;
if (!snip1.loadFromImage(sniper1,sf::IntRect(128,64, 64, 64)))
return -1;
sf::Sprite spritesnip1;
spritesnip1.setTexture(snip1);
spritesnip1.setPosition(sf::Vector2f(320, 80));
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
sf::Clock clock;
sf::Time t2 = sf::seconds(2.0);
sf::Time t4 = sf::seconds(4.0);
sf::Time t6 = sf::seconds(6.0);
sf::Time t8 = sf::seconds(8.0);
sf::Time elapsed1 = clock.getElapsedTime();
if (elapsed1 > t2 && elapsed1 < t4)
{
snip1.loadFromImage(sniper1,sf::IntRect(196,64, 64, 64));
}
if (elapsed1 > t4 && elapsed1 < t6)
{
snip1.loadFromImage(sniper1,sf::IntRect(196,128, 64, 64));
}
if (elapsed1 > t6 && elapsed1 < t8)
{
snip1.loadFromImage(sniper1,sf::IntRect(128,64, 64, 64));
}
if (elapsed1 > t8)
{
clock.restart();
}
window.clear(fond);
window.draw(back);
window.draw(spritesnip1);
window.display();
}
return 0;
}