[SFML] - Appui sur deux touches simultanément
Bonjour,
Je viens chercher de l'aide, car je n'ai pas trouvé de solution dans la doc de sfml.
Dans mon projet en cours, je dirige simplement une voiture en modifiant l'orientation (angle) avec les touches gauche et droite et en avancant avec la touche up.
Seulement, je ne peux pas tourner en avancer en même temps... le mouvement est toujours celui de la dernière touche pressée.
Voici le code de gestion de les évènements:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
while (App.IsOpened())
{
vecX = vitesse_voiture * sin(DegToRad(angle));
vecY = vitesse_voiture * cos(DegToRad(angle));
// Traitement des évènements
sf::Event Event;
while (App.GetEvent(Event))
{
// Fenêtre fermée : on quitte
if (Event.Type == sf::Event::Closed)
App.Close();
if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Right))
{
angle = angle - 5.f;
printf("angle : %f \n", angle);
}
if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Left))
{
angle = angle + 5.f;
printf("angle : %f \n", angle);
}
if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Down)) //todo récupérer vue et bouger le screen c simple.
{
spt_voiture.Move(vecX, vecY);
printf("vecX : %f \n", vecX);
printf("vecY : %f \n", vecY);
}
if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Up))
{
vecY = vecY * (-1);
vecX = vecX * (-1);
spt_voiture.Move(vecX, vecY);
printf("vecX : %f \n", vecX);
printf("vecY : %f \n", vecY);
}
}
spt_voiture.SetRotation(angle);
// Affichage du contenu de la fenêtre à l'écran
App.SetView(vue);
App.Draw(spt_map);
App.Draw(spt_voiture);
App.Display(); |
Merci.