Je suis pas convaincu que ce soit utile à quiconque tant c'est trivial et basique mais admettons que ça fait pas de mal - si tenté que le code était correct.
- Collision en anglais c'est collide / collider.
- Tu as le droit de mettre des espaces dans ton code, au pire il sera plus lisible.
- La bonne pratique veut que l'on ne mélange pas && et || parce que autant oui il y a une règle claire sur lequel a priorité, autant c'est facilement mélangeant et une paire de parenthèses ne coûte rien.
- Avoir une fonction IsBetween est bien souvent pratique et permet une meilleure lisibilité à faible coût.
- Mais surtout, ton test est incomplet et incorrect.
(elem1.X>elem2.X)&&(elem1.Y>elem2.Y)
En supposant que le 0,0 est en haut à gauche, avec des axes qui vont vers la droite et le bas, ça c'est juste pour vérifier que l'origine de elem1 est en bas à droite de l'origine de elem2.
(elem1.X<elem2.X+elem2.W)&&(elem1.Y<elem2.Y+elem2.H)
Et là c'est juste pour savoir si l'origine de elem1 se trouve en haut à gauche du coin bas droit de elem2.
Mais vu que ton test est vrai dès que l'origine de elem1 est en bas à droite de l'origine de elem2 (parce que && a priorité sur ||)... la seconde partie est uniquement évaluée quand l'origine de elem1 n'est pas en bas à droite de elem2, et dans ce cas toujours vrai si l'origine de elem1 est cette fois située en haut à gauche du coin bas droit de elem2.
Donc finalement, quand est-ce que ce truc est faux : quand l'origine de elem1 se situe en haut à droite du coin haut droit de elem2, ou en bas à gauche du coin bas gauche de elem2.
Donc pour un elem2 donné, en rouge dans le dessin suivant, tu retournes true et prétends qu'il y a collision dès que elem1 a son origine dans la zone hachurée en jaune (zones ouvertes et donc qui s'étendent à l'infini dans leurs directions respectives)
https://jeux.developpez.com/tutoriel...es-collisions/
https://jeux.developpez.com/tutoriel...es-2d-simples/
Partager