ActionScript: Detect collision between 2 circles

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);
}