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 :
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.