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:
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
Partager