Jag håller på med en uppgift i Javascript som går ut på att jag skall ha en Canvas (på en HTML sida). I den kanvasen skall det från början finnas 2 stycken bollar. Dessa bollar skall röra på sig 2-dimensionellt och när de kolliderar skall en ny boll skapas. Jag kommer alltså i koden inte veta hur många bollar som finns i Canvasen. Problemet jag har är med funktionen som kollar efter kollisioner mellan bollar, den verkar ge utslag även utan att bollar kolliderar.
Här är funktionen som skall detektera kollisioner:
Tanken med de dubbla while-looparna är att de skall gå igenom alla bollar, som tidigare nämnt vet jag ju inte hur många bollar som kommer finnas. if-satsen är tänkt så att samma boll inte skall jämföras med sig själv.
var cntr1 = 0;
var cntr2 = 1;
function CheckBallCollisions() {
while (cntr1 < circles ) {
while ( cntr2 < circles ) {
if (cntr1 != cntr2) {
var xDist = ( x[cntr2] ) - ( x[cntr1] );
var yDist = ( y[cntr2] ) - ( y[cntr1] );
if ( xDist < 0) {
xDist = -xDist;
}
if ( yDist < 0) {
xDist = -xDist;
}
var totDist = Math.sqrt( (xDist*xDist) + (yDist*yDist) );
var totRadius = radius[cntr2] + radius[cntr1];
if ( totDist < totRadius ) {
BallCollide(cntr1, cntr2);
}
}
cntr2++;
}
cntr1++;
cntr2 = 1;
}
cntr1 = 0;
}
Tack på förhand!
Edit: Efter att ha kikat lite mer verkar det som att det är kollisionsfunktionen det är fel på. Har även ändrat kollisionsfunktionen så att avstånden kan vara negativa.