Salut !
Bon, voilà environ 1 heure que je suis sur le problème et je n'arrive pas à trouver une solution, j'ai donc besoin d'aide (ça m'énerve, je m'étais promis de ne pas demander d'aide cette fois-ci... loupé ).
J'ai créé une ellipse en mouvement en m'inspirant de l'exemple de chez Flossmanuals :
http://fr.flossmanuals.net/processing/l … dun-objet/
Ce que je souhaiterais faire, c'est une action qui ne s'active que lorsque je clique sur la souris et que le pointeur de la souris se trouve sur la balle.
La condition que je cherche donc c'est donc une "simple" :
SI clic de souris DANS l'objet en mouvement, FAIRE ceci.
Sachant que je récupère la position X et Y de l'objet dans 2 variables, que le projet fait 500 x 300 et que la balle fait 10 x 10 je pensais arriver à mes fins de cette façon :
int ciblePosX, ciblePosY; void mouseClicked() { if (mouseX >= ciblePosX + 10 && mouseX <= ciblePosX - 10 && mouseY >= ciblePosY + 10 && mouseY <= ciblePosY - 10 ) { println("OK !"); } } }
Mais il semblerait que ce n'est pas tout à fait ça...
Quelqu'un a t-il une idée plus simple s'il vous plait ?
Merci beaucoup !
Hors ligne
Bonjour,
Comme tu travailles avec un disque, il suffit de comparer la distance entre le centre de la balle et la position de la souris et le rayon de ta balle. Un outil très pratique dans ce type de programme est le PVector à la fois pour noter la position et la vitesse de la balle. Il y a aussi la méthode dist() qui te permet de calculer la distance. Donc voici le résultat :
Hors ligne
Sinon... tu peux remplacer les > par des < et les > par des <...
Ça marchera très bien...
int ciblePosX, ciblePosY; void mouseClicked() { if (mouseX <= ciblePosX + 10 && mouseX >= ciblePosX - 10 && mouseY <= ciblePosY + 10 && mouseY >= ciblePosY - 10 ) { println("OK !"); } } }
Hors ligne
Olivier... je... je n'ai aucun mots suffisamment fort pour exprimer à quel point je me sens bête.
Bon ben du coup Mushussu je vais me contenter de simplement inverser mes conneries, mais merci beaucoup :-)
Hors ligne
Je m'inscris en faux, car avec ce qu'Olivier propose, tu testes le carré cirsconcrit au disque. Si tu veux le disque :
int ciblePosX, ciblePosY; void mouseClicked() { if (sqrt((mouseX - ciblePosX) * (mouseX - ciblePosX) + (mouseY - ciblePosY) * (mouseY - ciblePosY)) < 20) { println("OK !"); } }
Hors ligne
Ah voilà !
Merci beaucoup à vous deux, ça fonctionne nickel !
Hors ligne
Pages: 1