Se la distanza tra due cerchi è < = alla somma dei loro raggi, abbiamo una collisione.
La tecnica di rilevamento dipendente dai frame fa sì che in ogni frame si controlli se ci sia una collisione, in relazione a dove si trovano gli oggetti.
Il codice:
//definiamo gli oggetti
var cerchio1:Object = {};
cerchio1.clip = cerchio1_mc;
cerchio1.x = cerchio1.clip._x;
cerchio1.y = cerchio1.clip._y;
cerchio1.radius = cerchio1.clip._width/2;
cerchio1.xmov = 3;
cerchio1.ymov = 1;
//
var cerchio2:Object = {};
cerchio2.clip = cerchio2_mc;
cerchio2.x = cerchio2.clip._x;
cerchio2.y = cerchio2.clip._y;
cerchio2.radius = cerchio2.clip._width/2;
cerchio2.xmov = -1;
cerchio2.ymov = 0;
//muoviamo i cerchi
function muoviCerchi():Void {
for (var i = 1; i<=2; ++i) {
var cerchio = this["cerchio"+i];
cerchio.x += cerchio.xmov;
cerchio.y += cerchio.ymov;
cerchio.clip._x = cerchio.x;
cerchio.clip._y = cerchio.y;
}
}
//funzione di calcolo della collisione
function cerchioToCerchio(cerchio1:Object, cerchio2:Object):Void {
var xDiff:Number = cerchio1.x-cerchio2.x;
var yDiff:Number = cerchio1.y-cerchio2.y;
var distance:Number = Math.sqrt(xDiff*xDiff+yDiff*yDiff);
var sommaRaggi:Number = cerchio1.radius+cerchio2.radius;
if (distance< = sommaRaggi) {
trace("collision detected");
} else {
trace("");
}
}
_root.onEnterFrame = function() {
muoviCerchi();
cerchioToCerchio(cerchio1, cerchio2);
};
mercoledì 23 luglio 2008
Iscriviti a:
Commenti sul post (Atom)


0 commenti:
Posta un commento