Gepost door: gert | februari 6, 2008

Zwaartekracht Correct

Zwaartekracht zal het realiteitsgehalte van je game sterk verhogen. Hieronder vind je de correcte berekening.

In veel gevallen voldoet een simpel truukje.

De formule

We gebruiken de volgende formule om de aantrekkingskracht tussen twee objecten te berekenen:

F = G * (massa1 * massa2) / afstand²

G is hier de gravitale constante. Onze games zullen er niet onder lijden indien we deze constante gelijk stellen met 1, of een andere waarde om de presentatie te verbeteren.

Een voorbeeld

// teken 3 planeten op de stage en plaats ze in een MovieClip
aarde_mc.massa = 60;
maan_mc.massa = 10;
mars_mc.massa = 20;
var planeten:Array = new Array(aarde_mc, maan_mc, mars_mc);
// de graviteitsconstante (fictief)
var G:Number = 200;
//
function animate() {
var len:Number = planeten.length;
for (var i:Number = 0; i < len ; i++) {
for (var j:Number = 0; j < len; j++) {
if (i == j) {
continue; // planeten niet t.o.v. zichzelf berekenen
}
var distance:Number = Math.sqrt(Math.pow(planeten[i]._x – planeten[j]._x, 2) + Math.pow(planeten[i]._y – planeten[j]._y, 2));
var F:Number = G * planeten[i].massa * planeten[j].massa / Math.pow(distance, 2);
// F = ma
var a1:Number = F / planeten[i].massa;
var a2:Number = F / planeten[j].massa;
//
var angle:Number = Math.atan2(planeten[i]._y – planeten[j]._y, planeten[i]._x – planeten[j]._x);
// de krachten zijn tegengesteld, vandaar + en -
planeten[i]._x -= a1 * Math.cos(angle);
planeten[i]._y -= a1 * Math.cos(angle);
planeten[j]._x += a2 * Math.cos(angle);
planeten[j]._y += a2 * Math.sin(angle);
}
}
}
onEnterFrame = animate;


Geef een reactie

Fill in your details below or click an icon to log in:

WordPress.com logo

Je reageert onder je WordPress.com account. Log Out / Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log Out / Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log Out / Bijwerken )

Verbinden met %s

Categorieën

Follow

Get every new post delivered to your Inbox.