voilà un bien joli vaisseau vert et blanc qui met les gazes.
un petit code fais en AS2 qui n'a pas la prétention d être parfaitement calé techniquement, mais qui peut être pédagogique toute est paramétrable le poids de l'appareille la planète ou ce trouve le vaisseau toute les formules sont tirées des lois de gravitation de newton
vous trouverez les tutoriels vidéos sur
http://habibal.tk/videos/creation-de-jeux-flash-simuler-la-gravite-physique-amusante-partie-1
http://habibal.tk/videos/creation-de-jeux-flash-simuler-la-gravite-physique-amusante-partie-2
Source / Exemple :
//en place le vaisseau sur la scene
attachMovie("vaisseau", "vaisseau", 20);
//en le positionne
vaisseau._x = Stage.width/2;
vaisseau._y = 0;
//réinsialiser la taille des flammes
vaisseau.flamme_1._yscale= 0;
vaisseau.flamme_2._yscale= 0;
//déclaration des variables
g = 6.67 * Math.pow(10, -11);//constante gravitationnelle de kepler
m = 5.9742* Math.pow(10, 24);// masse de la terre
r = Math.pow( 6380* Math.pow(10, 3), 2 );//reyon de la terre puissence 2
m_ves = 20 * Math.pow(10, 3); //masse du vesseau
force_poussee = 10 * Math.pow(10, 4);//force de poussée
gravity = ( g * m ) / r ;// formule de la gravité universelle
gravity = gravity / 30 ;//en devise le résultat par trante image par second
force_gravity = m_ves * gravity;//force gravitationnelle
yspeed = 0;//initialise la variable yspeed
xspeed = 0
rot = 10; //mystere !!!
force = 0;//initialisation de la variable d'incrémentation
poussee = 10;//valeur indice des flammes des réacteurs
//à chaque fois que la scene ce rafferechie
onEnterFrame = function () {
angle_radians = vaisseau._rotation * Math.PI/180
force_y = Math.cos(angle_radians) * force
force_x = Math.sin(angle_radians) * force
force_reacteur_y = force_gravity - force_y; //formule de calcule de la force
force_reacteur_x = force_x ;
acceleration_y = ( force_reacteur_y / m_ves ) / 30; // accelération de la poussée
acceleration_x = ( force_reacteur_x / m_ves ) / 30 ;
yspeed += gravity + acceleration_y ;//incrémentation de la variable yspeed
xspeed += acceleration_x ;//incrémentation de la variable yspeed
vaisseau.flech._rotation = 360
vaisseau.flech.height = force_reacteur_y / 80
vaisseau.flech.width = force_reacteur_x / 80
vaisseau._y += yspeed;//déplacer le vaisseau
vaisseau._x += xspeed;
trace( force_x )
if (Key.isDown(Key.LEFT)) {
vaisseau._rotation -= rot;//mystere
vaisseau.fusée_gauche_1.play();
vaisseau.fusée_gauche_2.play();
}
if (Key.isDown(Key.RIGHT)) {
vaisseau._rotation += rot;//mystere
vaisseau.fusée_droite_1.play();
vaisseau.fusée_droite_2.play();
}
if (Key.isDown(Key.UP)) {
if ( vaisseau.flamme_1._yscale >= 0 && vaisseau.flamme_1._yscale <= 100 ) {
//incrémentation de l'indice de flammes
vaisseau.flamme_1._yscale += poussee;
vaisseau.flamme_2._yscale += poussee;
force += force_poussee;//incrémentation de la force de poussée
}
}
if (Key.isDown(Key.DOWN)) {
if ( vaisseau.flamme_1._yscale > 0 ) {
//décrémentation de l'indice de flammes
vaisseau.flamme_1._yscale -= poussee;
vaisseau.flamme_2._yscale -= poussee;
force -= force_poussee; //décrémentation de la force de poussée
}
}
//condition de l'arret du vaisseau
if (vaisseau._y >= Stage.height-33) {
vaisseau._y = Stage.height-33;
yspeed = 0;
}
else if ( vaisseau._y < 0 ) {
vaisseau._y = 0;
yspeed = 0;
}
if ( vaisseau._x >= Stage.width-33) {
vaisseau._x = Stage.width-33;
xspeed = 0;
}
else if ( vaisseau._x < 33 ) {
vaisseau._x = 33;
xspeed = 0;
}
}
Conclusion :
J espère que vous avez appris des choses en vous amusent et aussi que vous avez apprécié mes commentaires vidéo laissé moi vos commentaires pour me perfectionner et vous présenter un travail toujours de meilleur qualité.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.