A La Découverte De Phaser - 4
Voici la suite de la traduction du tutoriel écrit par Alvin Ourad et Richard Davey.
Elle commence dans ce premier article
Puis se poursuit avec ce second article
Alors que le troisiĂšme article est lĂ
Les Groupes
Les Groupes sont vraiment puissants. Comme leur nom lâindique, ils vous permettent de grouper ensemble des objets similaires et de les controler comme une seule entitĂ©. Il est aussi possible de calculer les collisions entre Groupes, et pour ce jeu, nous allons utiliser deux groupes diffĂ©rents, lâun deux sera créé par le code suivant pour les plateformes :
platforms = game.add.group();
Comme pour les Sprites , game.add crĂ©e un objet Group. Nous lâassignons Ă une nouvelle variable locale appellĂ©e platforms. Une fois créé, nous pouvons lui ajouter des objets.
Tout dâabord, le sol. Il est positionnĂ© tout en bas de la zone de jeu et utilise lâimage âgroundâ chargĂ© auparavant. Le sol est ensuite mis Ă lâĂ©chelle pour remplir la largeur de lâĂ©cran de jeu.
Pour terminer, nous postionnons la valeur de la propriĂ©tĂ© âimmovableâ Ă true (NdT: vrai). Si nous le faisions pas, le sol bougerait quand le joueur rentrerai en collision avec lui (plus de dĂ©tails Ă ce sujet dans la rubrique Physique).
Une fois le sol en place, nous crééons 2 Ă©lĂ©ments plus petits pour sauter dessus en utilisant la mĂȘme technique que pour le sol.
Joueur Un PrĂȘt
Crééons une nouvelle variable locale appellĂ©e âplayerâ (NdT: nous traduirons le code plus tard si besoin) et ajoutons le code suivant Ă la fonction create.
Vous pouvez lire ce code dans le fichier part5.html :
// The player and its settings
player = game.add.sprite(32, game.world.height - 150, 'dude');
// We need to enable physics on the player
game.physics.arcade.enable(player);
// Player physics properties. Give the little guy a slight bounce.
player.body.bounce.y = 0.2;
player.body.gravity.y = 300;
player.body.collideWorldBounds = true;
// Our two animations, walking left and right.
player.animations.add('left', [0, 1, 2, 3], 10, true);
player.animations.add('right', [5, 6, 7, 8], 10, true);
Cela va crĂ©er un nouveau Sprite appellĂ© âplayerâ , positionnĂ© aux coordonnĂ©es 32 pixels du bord gauche du jeu et 150 pixels Ă partir du bas du jeu.
Nous indiquons dâutiliser la ressource âdudeâ chargĂ© auparavant. Si vous allez voir la fonction preload , vous verrez que âdudeâ a Ă©tĂ© chargĂ© en temps que feuille de Sprite , pas comme une image. Cela est du au fait quâil contient les diffĂ©rentes images de lâanimation.
Voici à quoi ressemble la feuille de Sprite dans son intégralité :

Vous pouvez voir 9 frames au total (NdT : les frames sont comme de petites diapositives de chaque Ă©tape de lâanimation), 4 reprĂ©sentant la course Ă gauche, 1 qui fait face Ă la camĂ©ra et 4 pour la course Ă droite. Notez que Phaser est capable de gĂ©rer des Sprites par symĂ©trie pour gagner de la place dans les frames, mais pour la simplicitĂ© de ce tutoriel, nous conserverons lâapproche Ă lâancienne.
Nous dĂ©finissons 2 animations appellĂ©es âleftâ et ârightâ (NdT : gauche et droite). Lâanimation âleftâ utilisera les frames 0, 1, 2 et 3 Ă la vitesse de 10 frames par seconde. Le paramĂštre true indique que lâanimation se fera en boucle. Ce sera notre cycle standard de course et nous utiliserons une animation similaire pour la direction opposĂ©e.
Une fois les animations créées, occupons nous de quelques propriétés de physique.
Objet Body et Velocity : un monde de Physiques
Phaser propose une grande variété de systÚme de gestion de la physique. Il est fourni avec le systÚme Arcade Physics , le systÚme Ninja Physics et le systÚme P2.JS Full-Body Physics. (NdT : ce sont les noms que vous retrouverez dans la documentation).
Pour les besoins de ce tutoriel, nous allons utiliser le systÚme Arcade Physics , qui est à la fois simple et léger, un choix parfait pour les navigateurs mobiles.
Vous verrez dans le code que nous aurons Ă dĂ©marrer le systĂšme de physique, puis pour chaque Sprite ou Group que nous voudrons gĂ©rer par ce systĂšme, nous devrons lâactiver un Ă un.
Une fois que cela est fait, chaque Sprite se retrouve avec une propriété body , qui est une instance de celui du systÚme ArcadePhysics. Cela représente le Sprite comme un corps physique dans le moteur Arcade Physics de Phaser.
Lâobjet body en lui mĂȘme possĂšde un certain nombre de propriĂ©tĂ©s avec lesquelles nous pourrons jouer. Pour simuler les effets de la gravitĂ© sur un Sprite , câest aussi simple que dâĂ©crire ce qui suit :
player.body.gravity.y = 300;
Câest une valeur arbitraire, mais logiquement, plus la valeur est Ă©levĂ©e, plus lâobjet est lourd et plus vite il chute.
Si vous ajoutez ceci Ă votre code ou si vous lancer le fichier part5.html , vous verrez le joueur tomber sans sâarrĂȘter, ce jusquâau bas du monde du jeu, en ignorant le sol que nous avons créé auparavant :

A bientĂŽt
VoilĂ , la suite expliquera comment faire pour que le joueur sâarrĂȘte au sol et comment le dĂ©placer avec le clavier.
Entre temps, ne soyez pas timides : laissez des commentaires ou écrivez moi et surtout amusez vous !

