Versatis59
Messages postés16Date d'inscriptionvendredi 2 janvier 2015StatutMembreDernière intervention26 novembre 2016
-
26 nov. 2016 à 19:06
Bonsoir,
Bonsoir, je suis actuellement entrain de coder un jeu en C++ avec SFML. J'ai un personnage (Sprite ninja), avec une animation, pour choisir l’animation. J'utilise une image avec étage 1 : Position fixe ; étage 2 : Courir.
Mais j'ai un problème, au lieu de m'afficher un carré de l'image et de changer d'image très rapidement, l'image défile de gauche à droite, je ne comprend pas pourquoi, voila le code : ( animation ligne 49 )
int main()
{
// Création d'une fenêtre en SFML //
RenderWindow window(VideoMode(800, 480, 32), "app");
window.setFramerateLimit(60);
window.setVerticalSyncEnabled(true);
// Création des sprites //
Texture backgroundTexture;
Sprite background;
Texture ninjaTexture;
Sprite ninja;
// Chargement des textures //
if (!ninjaTexture.loadFromFile("graphics/ninja/final.png"))
{
cout << "Erreur durant le chargement de l'image de background." << endl;
}
else
{
ninja.setTexture(ninjaTexture);
ninja.scale(0.3f, 0.3f);
ninja.setPosition(300, 377);
}
if (!backgroundTexture.loadFromFile("graphics/background.png"))
{
cout << "Erreur durant le chargement de l'image de background." << endl;
}
else
{
background.setTexture(backgroundTexture);
background.scale(0.5f, 0.5f);
}
// Animations //
int frameTimer(4), frameNumber(0), frameMax(10), direction(0), w(363), h(329), etat(0);
// Boucle principale du jeu //
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
{
etat = 1;
direction = 0;
w = (363);
h = (329);
ninja.move(4, 0);
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Q))
{
etat = 1;
direction = 1;
w = (363);
h = (329);
ninja.move(-4, 0);
}
else if (!sf::Keyboard::isKeyPressed(sf::Keyboard::D) && !sf::Keyboard::isKeyPressed(sf::Keyboard::Q))
{
etat = 0;
w = (232);
h = (329);
}
}