Tutoriels - Flash - Jeux fichier source



Déplacement et direction (écrit par Jérémie )

Contrôle des déplacements pour un petit jeu de course.

intro

on a vu dans la première partie comme utiliser les évenements clavier, pour déplacer un véhicule. ce type de déplacement s'adapte à certains types de jeu comme 1942 (mais oui, le vieux jeu avec l'avion qui doit éviter des ennemis). cette fois, on va apprendre à déplacer notre voiture comme dans un jeu de course, vu de dessus (comme micro-machine). on va gérer l'accelération et la rotation de la voiture.
pour les évenements clavier, on fera tout comme le premier tutoriel.

  étape 1 - création de la voiture

dessinez votre voiture, l'avant vers la droite. convertissez là en symbole (F8). c'est le seul symbole dont nous avons besoin.

étape 2 - vitesse

la vitesse est une variable que nous créons pour calculer les coordonnées de la voiture. elle augmente avec la touche "haut" et diminue avec la touche "bas". on se soucie pas de la direction de la voiture pour le moment.

tout d'abord, au démarrage, la vitesse de la voiture doit être nulle. revenez sur la scène principale, clic droit sur la voiture > actions. passez en mode expert (crtl - e) et écrivez :
onClipEvent(load){
vitesse = 0;
}


tant que la touche "haut" est enfoncée, la vitesse augmente, tant que la touche "bas" est enfoncée elle diminue. nous allons donc écrire :
onClipEvent(enterFrame){
if (Key.isDown(Key.UP)) { vitesse += 1 }
if (Key.isDown(Key.DOWN)) { vitesse -= 1 }

}


"+= 1" veut dire "ajouter 1"
(si vous ne comprennez pas le reste, regardez encore le précédent tutoriel sur les événements clavier)
dans notre cas, la vitesse doit diminuer lorsque aucune touche n'est appuyée. ajoutez donc sous les deux tests précédents :

vitesse *= 0.8;

qui a pour effet de diminuer la vitesse. si aucune touche n'est pressée, la vitesse diminue juqu'à être nulle.

étape 3 - rotation

définissons maintenant les touches pour tourner. chaque clip dans flash possède des propriétés : transparence, visibilité, position x, position y, taille x etc. nous utilisons ici la rotation. par défaut la rotation d'un objet est nulle, mais vérifiez celle de votre voiture en la sélectionnant et en tapant : ctrl + alt + i, onglet "transformation". "pivoter" doit être coché et sa valeur doit être nulle (si ce n'est pas le cas, cochez et écrivez 0)
revenez dans les actions de la voiture, comme précedemment et ajoutez sous le calcul de la vitesse

if (Key.isDown(Key.RIGHT)) { _rotation += 15 }
if (Key.isDown(Key.LEFT)) { _rotation -= 15 }

_rotation correspond à la propriété "rotation" de votre voiture, quant à savoir à quelle touche correspond +15 et à quelle touche correspond -15, il suffit d'essayer.

étape 4 - mathématiques

plus compliqué, maintenant. nous devons calculer les coordonnées de la voiture en fonction de sa vitesse et de son angle d'inclinaison. nous utilisons pour cela Pythagore (encore) et les fonctions cosinus et sinus de flash.
tout d'abord, l'angle d'inclinaison est en degré, et les fonctions cosinus et sinus fonctionnent en radian. pour convertir des degré en radian nous allons utiliser :
radian = PI/180 * degree

la voiture doit effectuer un trajet égal à sa vitesse, en suivant son angle d'inclinaison. nous devons donc trouver, en fonction de ces deux propriétés, sa vitesse sur l'axe des x et sa vitesse sur l'axe des y. (voir schéma)
cos(angle) = côté adjacent / hypothénuse
sin(angle) = côté opposé / hypothénuse
soit, sur le schéma :
cos(angle) = x / vitesse
sin(angle) = y / vitesse

nous avons donc x et y :
x = vitesse * cos (angle)
y = vitesse * sin (angle)

x et y correspondent au chemin parcouru en x et en y, nous devons donc les ajouter aux coordonnées du véhicule :
_x += x;
_y += y;
(n'écrivez encore rien dans l'animation flash)

n'oublions pas que _rotation est en degrés :
vous pouvez maintenant écrire, sous les deux tests de rotation :

_x += vitesse * Math.cos (Math.PI/180 * _rotation);
_y += vitesse * Math.sin (Math.PI/180 * _rotation);

le code est terminé, vous pouvez tester votre fichier. vous pouvez, si vous le souhaitez, placer votre voiture différemment au départ, le code fonctionne toujours.


Tous droits réservés 2003 Jérémie Cook