diumenge, de juny 04, 2006

Apliquem la fisica a Macromedia Flash - Astronauta

Si ets desenvolupador de macromedia flash, has de saber que amb tímids coneixements de física, es poden conseguir efectes d'alt realisme.

En aquest primer exemple, simularem el salt d'un astronauta en diferents cossos del sistema solar: La Lluna, la Terra, Mercuri i Jupiter. Com ja saps, la força de gravetat en un planeta està directament relacionada amb la massa d'aquest.

Així doncs, un astronauta amb massa X, amb una velocitat inicial al salt, adquirirà altituds diferents en els diferents planetes. Però no només això, l'astronauta, en caure, serà atret cap al planeta amb forces de gravetat diferents, i per tant es mourà a velocitats diferents.


Només hem de determinar en cada instant la posició Y del astronauta, i ho farem així:

astronauta._y = astronauta.pinicialy - astronauta.vinicialy * t - astronauta.a * t * t / 2;

Com veieu la formula no esta pas inventada ;-)


A continuació us adjunto el codi font, que faria saltar els 4 astronautes:

_root.onLoad=function(){
// Paràmetres inicials per cada astronauta

a_1.a = -500;
a_1.pinicialx = a_1._x;
a_1.vinicialx = 0;
a_1.pinicialy = a_1._y;
a_1.vinicialy = 187;
a_1.i=1;

a_2.a = -85;
a_2.pinicialx = a_2._x;
a_2.vinicialx = 0;
a_2.pinicialy = a_2._y;
a_2.vinicialy = 187;
a_2.i=1;

a_3.a = -1155;
a_3.pinicialx = a_3._x;
a_3.vinicialx = 0;
a_3.pinicialy = a_3._y;
a_3.vinicialy = 187;
a_3.i=1;

a_4.a = -185;
a_4.pinicialx = a_4._x;
a_4.vinicialx = 0;
a_4.pinicialy = a_4._y;
a_4.vinicialy = 187;
a_4.i=1;

}

_root.onEnterFrame=function(){
// vaig movent tots els astronautes

for(j=1;j<=4;j++){
astronauta=eval("a_" + j); t = astronauta.i / 20;
astronauta.suelo = astronauta.pinicialy;
astronauta._y = astronauta.pinicialy - astronauta.vinicialy * t - astronauta.a * t * t / 2;

if (astronauta._y > astronauta.suelo){
astronauta._y=astronauta.suelo;
astronauta.i = 1;
}
astronauta.i++;
}
}

Aquí podeu veure el exemple final com queda:

Simulació gravitacional

I aquí podeu descarregar el codi font (zip, que contè el FLA complert):

http://www.catalunyamultimedia.com/blog/astronauta.zip