Voila, dans mon programme je souhaite détecter lorsque la hitbox d'un Guictrlcreate.. entre collision (se superpose) avec celle d'une autre hitbox d'un autre Guictrlcreate..
Si ce dont je vous parle n'est pas claire, je vous ai préparé un petit programme explicatif.
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>
#include <FontConstants.au3>
#include <ListviewConstants.au3>
#include <ColorConstants.au3>
#include <Misc.au3>
Guicreate("",550,300)
Guictrlcreatelabel("Les touches ZQSD pour déplacer le carré bleu" & @crlf & "Les fléches directionelles pour déplacer le carré rouge",5,5)
;creation du perso 1 qui est le carré rouge
$Perso1 = Guictrlcreatelabel("",350,100,50,50)
GUICtrlSetBkColor($Perso1,$COLOR_RED)
;creation du perso 12qui est le carré bleu
$Perso2 = Guictrlcreatelabel("",150,100,50,50)
GUICtrlSetBkColor($Perso2,$COLOR_BLUE)
Guisetstate()
While 1
$msg = GUIGetMsg(1)
;Trouve les coordonnés du perso 1
$Coo1 = ControlGetPos("","",$Perso1)
$X_P1 = $Coo1[0]
$Y_P1 = $Coo1[1]
;Trouve les coordonnés du perso 2
$Coo2 = ControlGetPos("","",$Perso2)
$X_P2 = $Coo2[0]
$Y_P2 = $Coo2[1]
;Systeme pour deplacer le perso 1
If _IsPressed("26") Then
Guictrlsetpos($Perso1,$X_P1,$Y_P1 - 1)
ElseIf _IsPressed("28") Then
Guictrlsetpos($Perso1,$X_P1,$Y_P1 + 1)
ElseIf _IsPressed("27") Then
Guictrlsetpos($Perso1,$X_P1 + 1,$Y_P1)
ElseIf _IsPressed("25") Then
Guictrlsetpos($Perso1,$X_P1 - 1,$Y_P1)
EndIf
;Systeme pour deplacer le perso 2
If _IsPressed("5A") Then
Guictrlsetpos($Perso2,$X_P2,$Y_P2- 1)
ElseIf _IsPressed("53") Then
Guictrlsetpos($Perso2,$X_P2,$Y_P2 + 1)
ElseIf _IsPressed("44") Then
Guictrlsetpos($Perso2,$X_P2 + 1,$Y_P2)
ElseIf _IsPressed("51") Then
Guictrlsetpos($Perso2,$X_P2 - 1,$Y_P2)
EndIf
;Permet de fermer le programme
Select
Case $Msg[0] = $Gui_event_close
Exit
EndSelect
WEnd
Si vous avez lancé le programme si dessus, on peut bouger les carré, et j'aimerais détecter si les carrés rentre en collision entre eux. J'ai déjà fais un test en regardant si:
Code : Tout sélectionner
if $X_Carre_Bleu = $X_Carre_Rouge and $Y_Carre_Bleu = $Y_Carre_Rouge then
faire quelque chose
Le problème de cette méthode est, que la collision est détecter seulement si les pixels en haut a gauche des carrés se touchent.
En espèrent avoir étais claire et aussi, que ce dont je recherche soit possible a créer.
Merci de votre lecture et bonne journée !