Tutorial: How to create a game like Angry Birds in Flash – Part 4 – Create the pigs and the collision detection

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 :

  1. Insertion > Nouveau Symbole
  2. Nom : Pig
  3. Type : MovieClip
  4. Cocher exporter pour ActionScript
  5. Classe : Pig
  6. OK

Capture d’écran 2013-04-28 à 22.25.04

Dessiner un joli cochon vert comme ceci avec les dimensions : 30×30.

Capture d’écran 2013-04-28 à 22.25.21

Ou télécharger mon sprite :

pig

La classe du Cochon

Créer la classe du Cochon

  1. Nouveau > Fichier > Classe ActionSript 3.0
  2. 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 :

Capture d’écran 2013-04-28 à 23.32.12

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 !