Bonjour,
Je m'adresse à vous aujourd'hui car j'essayais de programmer un test pour voir s'il y avait une collision entre ma souris et un cercle dessiné sous SFML.
Après quelques test je n'arrive toujours pas à la détecter.Je précise que je suis débutants en SFML .
Dans l'espoir que l'on m'aide
Merci d'avance
PS: J'allais oublier mon code :
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 #include <SFML/Graphics/RenderWindow.hpp> #include <SFML/Graphics/CircleShape.hpp> #include <SFML/Window/Event.hpp> using namespace sf; struct Cercle { int x; int y; int R; }; bool collision(int,int,Cercle); int main() { Cercle C; C.x=100; C.y=100; C.R=10; bool Couleur=false; RenderWindow win(VideoMode(800, 800), "SFML Test"); /// Creation du projectile CircleShape shape(C.R); shape.setPosition(C.x,C.y); while (win.isOpen()) { Event event; while (win.pollEvent(event)) { if (event.type == Event::Closed) { win.close(); } bool Couleur=collision(Mouse::getPosition().x,Mouse::getPosition().y,C); if (Couleur=true) { shape.setFillColor(Color::Green); } else { shape.setFillColor(Color::Red); } } win.clear(); win.draw(shape); win.display(); } return 0; } bool collision(int x,int y,Cercle C) { int d2 = (x-C.x)*(x-C.x) + (y-C.y)*(y-C.y); if (d2>C.R*C.R) return false; else return true; }
Partager