Bonjour,
Alors voilà tout d'abord je ne sais pas si ce post est à mettre dans la partie Graphique ou Fenêtre mais j'ai choisi le forum Fenêtrage car le problème est en lien avec ceci.
Donc j'ai un problème lorsque je clique sur la barre de la fenêtre ou lorsque je la déplace. En effet, je gère la collision d'un sprite et lorsque je fais une des 2 actions ci-dessus, le système de collision est comme "endormi" c'est-à-dire qu'il ne marche plus jusqu'à ce que j’arrête de cliquer ou déplacer la fenêtre.
Voici un code qui fait cela :
#include <SFML/Graphics.hpp>
#include <iostream>
int main()
{
sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Window");
sf::Image Image, image2;
if (!Image.LoadFromFile("test.png"))
return EXIT_FAILURE;
image2.LoadFromFile("test2.png");
sf::Sprite Sprite(Image);
//Sprite.SetBlendMode(sf::Blend::None);
Sprite.SetPosition(200.f, 500.f);
int ok = 0;
int descente = 0;
int v = 0;
sf::Image BackgroundImage;
if (!BackgroundImage.LoadFromFile("background.jpg"))
return EXIT_FAILURE;
while (App.IsOpened())
{
sf::Event Event;
while (App.GetEvent(Event))
{
if (Event.Type == sf::Event::Closed)// Fenêtre fermée
App.Close();
if(Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::Up)
ok = 1;
if(Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::Down)
{
sf::Sprite s;
s.SetImage(image2);
Sprite = s;
}
}
float ElapsedTime = App.GetFrameTime();
if (App.GetInput().IsKeyDown(sf::Key::Right)) Sprite.Move( 110 * ElapsedTime, 0);
if (App.GetInput().IsKeyDown(sf::Key::Left)) Sprite.Move( -110 * ElapsedTime, 0);
if(ok == 1)
{
if(descente == 0)
{
if(Sprite.GetPosition().y > 425)
{
Sprite.Move(0, (-100+v) * ElapsedTime);
v -= 1;
}
else
{
descente = 1;
}
}
else
{
if(Sprite.GetPosition().y < 500)
{
Sprite.Move(0, (100+v) * ElapsedTime);
v += 1;
}
else
{
descente = 0;
ok = 0;
v = 0;
}
}
}
App.Clear();
App.Draw(Sprite);
App.Display();
}
return EXIT_SUCCESS;
}
C'est un code que j'avais fait pour tester la SFML pour la première fois.
Savez-vous comment régler le problème car, à moins d'imposer le fullscreen, si l'utilisateur bouge la fenêtre le sprite et les pnj du jeu passeront à travers les murs ?
Merci.