Dans ce tutoriel je vais vous montrer comment déplacer un objet avec le clavier en contrôle absolu en Flash.
Voir également comment déplacer un objet avec le clavier avec des contrôles relatifs à la caméra.
Contrôle absolu ? Kézako ?
La direction de votre objet va être calculée en fonction de l’orientation de votre objet. (Resident Evil, Micro Machines, Gears of War, etc.). Ce script est très utile pour les jeux de voitures.
Comment faire un contrôle absolu en Flash?
- Récupérer les informations des touches du clavier (touche enfoncée, touche relâchée)
- Déplacer ou tourner l’objet entre chaque frame avec la nouvelle vitesse (Touche gauche et droite : tourner l’objet, Haut : faire avancer l’objet, Bas ; faire reculer l’objet)
// Assigner 4 booléens pour chaque touche var keyUp = false; var keyDown = false; var keyLeft = false; var keyRight = false; // Ajouter une écouteur d'événement clavier pour une touche pressée sur la scène stage.addEventListener(KeyboardEvent.KEY_DOWN, pressKey); function pressKey(pEvent) { // Si une touche est enfoncée, changer la valeur du boolean (true) assignée pour la touche correspondante if (pEvent.keyCode == 38) { keyUp = true; } else if (pEvent.keyCode == 40) { keyDown = true; } else if (pEvent.keyCode == 37) { keyLeft = true; } else if (pEvent.keyCode == 39) { keyRight = true; } } // Ajouter un écouteur d'événement clavier pour une touche relâchée sur la scène stage.addEventListener(KeyboardEvent.KEY_UP, releaseKey); function releaseKey(pEvent) { // Si une touche est relâchée, changer la valeur du boolean (false) assignée pour la touche correspondante if (pEvent.keyCode == 38) { keyUp = false; } else if (pEvent.keyCode == 40) { keyDown = false; } else if (pEvent.keyCode == 37) { keyLeft = false; } else if (pEvent.keyCode == 39) { keyRight = false; } } // Assigner la vitesse de l'objet à 6px/frame var speed = 6; // Et la vitesse de rotation en ° var rotationSpeed = 5; // Ajouter un écouteur d'événement entre chaque frame sur l'objet en mouvement myCircle.addEventListener(Event.ENTER_FRAME, circleEnterFrame); function circleEnterFrame(pEvent) { // Assigner la vélocité initiale de l'objet à 0 var velocity = 0; if (keyUp) { // Si la touche Haut est enfoncée on assigne la vitesse de l'objet à la vélocité courante velocity = speed; } if (keyDown) { // Si la touche Haut est enfoncée on assigne la vitesse de l'objet à la vélocité courante divisée par 2 velocity = - speed / 2; } if (keyLeft) { // Faire tourner l'objet sur lui même pEvent.currentTarget.rotation -= rotationSpeed; } if (keyRight) { //Faire tourner l'objet sur lui même pEvent.currentTarget.rotation += rotationSpeed; } // On convertie l'angle formé par l'objet en radian var angleRadian = pEvent.currentTarget.rotation / 180 * Math.PI; // On déplace l'objet avec l'angle, soit son orientation et sa vitesse courante donc sa vélocité pEvent.currentTarget.x += Math.cos(angleRadian) * velocity; pEvent.currentTarget.y += Math.sin(angleRadian) * velocity; }
[swf:/wp-content/uploads/2011/02/www.benoitfreslon.com_Move_an_object_with_keyboard_with_absolute_controls.swf 550 400]
Télécharger la source : www.benoitfreslon.com_Move_an_object_with_keyboard_with_absolute_controls