Avec le fameux théorème de Pythagore on peut détecter facilement des collisions entre 2 cercles.
Il suffit d’utiliser les rayons des 2 cercles avec la propriétés width divisée par 2.
En fait la propriété width renvoie le diamètre de l’objet circulaire. Donc si on veut le rayon on fait comme cela :
rayon = diametre / 2
rayon = cercle.width / 2
Ensuite si on calcule la distance entre les 2 cercles on peut détecter la collision :
if distance < ( circle1.width/2+ circle2.width/2 ) est true => Collision
[swf:/wp-content/uploads/2010/12/Detect_collision_with_2_circles.swf 550 400]
// Lancer l'événement enter frame this.addEventListener(Event.ENTER_FRAME, enterFrame); function enterFrame(pEvent:Event):void { // Calculer la distance entre les 2 MovieClips var dist:int = getDistance(myCircleBlu,myCircleRed); // Tester la distance entre les 2 cercles if (dist < myCircleRed.width/2 + myCircleBlu.width/2) { // Si il y a une collision on change l'opacité des cercles myCircleRed.alpha = 0.5; myCircleBlu.alpha = 0.5; } else { myCircleRed.alpha = 1; myCircleBlu.alpha = 1; } } function getDistance(pObj1:MovieClip,pObj2:MovieClip):Number { var distX:Number = pObj1.x - pObj2.x; var distY:Number = pObj1.y - pObj2.y; return Math.sqrt(distX * distX + distY * distY); }