Partie 4 – Création des cochons et détection des collisions
Introduction
Voici le quatrième tutoriel pour apprendre à créer un jeu de physique comme Angry Birds en Flash avec Box2D.
Vous pouvez télécharger toutes les sources ici : How_to_create_a_game_like_angry_birds_part4.zip
Si vous avez raté le premier tutoriel vous pouvez le trouver ici : https://benoitfreslon.com/fr/tutorial-how-to-create-a-game-like-angry-birds-with-box2d-world-construction-kit-flash-part-1
Dans ce tutoriel nous allons créer les ennemis : les Cochons. Puis nous allons détecter les collisions pour les détruire.
[swf:https://benoitfreslon.com/wp-content/uploads/2013/04/main2.swf 800 400]
Create the Pig character
Créer le Clip du Cochon :
- Insertion > Nouveau Symbole
- Nom : Pig
- Type : MovieClip
- Cocher exporter pour ActionScript
- Classe : Pig
- OK
Dessiner un joli cochon vert comme ceci avec les dimensions : 30×30.
Ou télécharger mon sprite :
La classe du Cochon
Créer la classe du Cochon
- Nouveau > Fichier > Classe ActionSript 3.0
- Nom de classe : Pig
Copier et coller ce code à la place :
package { import flash.events.Event; import flash.utils.*; import flash.geom.*; import Box2DAS.*; import Box2DAS.Collision.*; import Box2DAS.Collision.Shapes.*; import Box2DAS.Common.*; import Box2DAS.Dynamics.*; import Box2DAS.Dynamics.Contacts.*; import Box2DAS.Dynamics.Joints.*; import cmodule.Box2D.*; import wck.*; import shapes.*; import misc.*; import extras.*; public class Pig extends Circle { /** Methode constructeur, appellée quand l'instance est créée */ public function Pig() { // code constructeur super(); } /** Appellée quand le cochon est ajoutée sur la scène par box2d */ override public function create():void { trace("pig created"); // Physic properties density = 10; friction = 1; type = "Dynamic"; reportBeginContact = true; reportEndContact = true; reportPostSolve = true; reportPreSolve = true; allowDragging = false; super.create(); // Commencer la détection de collision dans 1 seconde // Quelque fois la collision se déclachance trop tôt c'est pour ça que la détection est retardée setTimeout(initCollision, 1000); } private function initCollision():void { // Initialiser la détection de collision listenWhileVisible(this, ContactEvent.POST_SOLVE, postSolveContactHandler, false, 0, true); } /** Définir la taille du la forme */ override public function shapes():void { // 15 px of raduis circle(15); } /** Méthode appelée au moment d'une collision*/ private function postSolveContactHandler(e:ContactEvent):void { // Récupérer le contact var impulse:b2ContactImpulse = e.impulses; // Calculer la force du contact var normalLength:Number = Math.sqrt((impulse.normalImpulse1 * impulse.normalImpulse1) + (impulse.normalImpulse2 * impulse.normalImpulse2)); trace("normalLength", normalLength); // Vérifier si le contact est assez fort if (normalLength > 1) { // Supprimer le cochon remove(); return; } } } }
Ajouter les cochons dans le clip World comme ceci :
Enfin tester le niveau.
Le tutoriel est terminé. Si vous souhaitez d’autres fonctionnalités et plus de tutoriels sur le moteur d’Angry Birds postez un commentaire :).
Amusez-vous bien !