Sprite Kit Tutoriel: Comment faire un jeu de plateforme comme Super Mario Brothers && num; 8211 & semi; Partie 2

Advertisement

Si vous êtes nouveau ici, vous pouvez vous abonner à mon flux RSS ou suivez-moi sur Twitter. Merci de votre visite!

Sprite Kit Tutoriel: Comment faire un jeu de plateforme comme Super Mario Brothers && num; 8211 & semi;  Partie 2


Apprenez à créer un jeu comme Super Mario!

Mise à jour 02/02/14: Je l' ai mis à jour ce tutoriel pour Kit Sprite pour célébrer le lancement de la deuxième édition de la plateforme de jeu Starter Kit, qui est entièrement mis à jour pour Kit Sprite. Prendre plaisir!

Bienvenue à notre série de didacticiels de 2 parties Sprite Kit sur la réalisation d'un jeu comme Super Mario!

Dans la première partie de la série, vous avez appris comment créer un moteur de physique simple, basé sur les tuiles qui contrôle comment le héros de votre jeu, Koalio, se déplace dans son monde.

Dans cette deuxième et dernière partie de la série, vous apprendrez comment faire Koalio courir et sauter - la partie amusante du jeu!

Vous allez également ajouter des collisions avec ces planchers effrayants spikey, gérer gagner et perdre, et bien sûr ajouter des effets sonores gratuits et de la musique.

Cette deuxième partie est plus simple (et plus courte) que le premier tutoriel, une récompense pour le travail dur que vous avez mis la dernière fois. Alors, tournez votre mojo de codage, et profitez-en!

Déménagement Koalio Around

Les contrôles que vous allez mettre en œuvre sont très simples. Il n'y aura que des contrôles de saut et de saut, tout comme le 1-bit Ninja. Si vous touchez la moitié gauche de l'écran, Koalio se précipite vers l'avant. Toucher la moitié droite de l'écran fera sauter Koalio.

Tu m'as bien compris - Koalio ne peut pas reculer! Les Koalas véritables ne reculent pas devant le danger.

Depuis Koalio sera déplacé vers l' avant par l'utilisateur, plutôt que par le GameLevelScene , vous avez besoin des valeurs que vous pouvez vérifier dans la classe du joueur de mettre à jour sa vitesse vers l' avant. Ajoutez les propriétés suivantes à la classe Player:

En Player.h:

  @property (nonatomic, assign) BOOL forwardMarch;  @property (nonatomic, assign) BOOL peutAsWellJump; 

Maintenant , ajoutez les méthodes tactile manipulations suivantes à l'GameLevelScene.m:

  - (void) touchesBegan: (NSSet *) touche avecEvent: (UIEvent *) event {for (UITouch * touch en touch) {CGPoint touchLocation = [touch locationInNode: self];  If (touchLocation.x> self.size.width / 2.0) {self.player.mightAsWellJump = YES;  } Else {self.player.forwardMarch = OUI;  }}} - (void) touchesMoved: (NSSet *) touche avecEvent: (UIEvent *) event {for (UITouch * touch en touch) {float halfWidth = self.size.width / 2.0;  CGPoint touchLocation = [touch locationInNode: self];  // obtenez le contact précédent et le convertis vers l'espace de noeud CGPoint previousTouchLocation = [touch previousLocationInNode: self];  If (touchLocation.x> halfWidth && previousTouchLocation.x <= halfWidth) {self.player.forwardMarch = NO;  Self.player.mightAsWellJump = OUI;  } Else if (previousTouchLocation.x> halfWidth && touchLocation.x <= halfWidth) {self.player.forwardMarch = YES;  Self.player.mightAsWellJump = NON;  }}} - (void) touchesEnded: (NSSet *) touche avecEvent: (UIEvent *) event {for (UITouch * touch en touch) {CGPoint touchLocation = [touch locationInNode: self];  If (touchLocation.x <self.size.width / 2.0) {self.player.forwardMarch = NO;  } Else {self.player.mightAsWellJump = NON;  ...... 

Ces changements devraient être assez simples. Si l'utilisateur crée un événement tactile qui a une coordonnée X de moins de la moitié de la largeur de l'écran, vous allumez le forwardMarch booléenne pour le joueur. Dans le cas contraire (si l'emplacement de l'événement tactile est supérieure à celle), il suffit de tourner sur la mightAsWellJump booléen.

touchesMoved est un peu plus compliqué, parce que vous voulez seulement changer les valeurs booléennes ci - dessus si le contact traverse mi écran, vous devez donc calculer le previousTouch emplacement aussi bien. Autre que cela, vous êtes juste vérifier pour voir quelle direction le toucher croise et en tournant le booléen approprié sur ou hors tension. Enfin, si l'utilisateur cesse de toucher un côté de l'écran ou l'autre, vous voulez désactiver la valeur booléenne appropriée.

Il ya quelques changements qui doivent être faits pour détecter les touches. Tout d' abord, ajoutez cette ligne à initWithSize :

  Self.userInteractionEnabled = OUI; 

Maintenant que vous passez les touches à vos booléens de classe de joueur, vous pouvez ajouter du code à la méthode de mise à jour pour que Koalio puisse se déplacer. Commencez par le mouvement vers l'avant. Changer la méthode de mise à jour dans Player.m à ce qui suit:

  - (void) mise à jour: (NSTimeInterval) delta {CGPoint gravité = CGPointMake (0.0, -450.0);  CGPoint gravityStep = CGPointMultiplyScalar (gravité, delta);  // 1 CGPoint forwardMove = CGPointMake (800,0, 0,0);  CGPoint forwardMoveStep = CGPointMultiplyScalar (forwardMove, delta);  Self.velocity = CGPointAjoute (self.velocity, gravityStep);  // 2 self.velocity = CGPointMake (self.velocity.x * 0.9, self.velocity.y);  // 3 // Le code saut va ici si (self.forwardMarch) {self.velocity = CGPointAdd (self.velocity, forwardMoveStep);  } // 4 CGPoint minMovement = CGPointMake (0,0, -450);  CGPoint maxMovement = CGPointMake (120,0, 250,0);  Self.velocity = CGPointMake (Clamp (self.velocity.x, minMovement.x, maxMovement.x), Clamp (self.velocity.y, minMovement.y, maxMovement.y));  CGPoint velocityStep = CGPointMultiplyScalar (self.velocity, delta);  Self.desiredPosition = CGPointAdd (self.position, velocityStep);  } 

Let's break ces nouvelles lignes vers le bas section par section:

  1. Vous ajoutez une force forwardMove qui entrera en jeu pendant que l'utilisateur touche l'écran. Pour rappel, vous êtes mise à l' échelle que la force (800 points par seconde) à la quantité appropriée pour le pas de temps de la trame courante ( delta ) afin d'avoir une accélération constante.
  2. Ici, vous appliquez une force d'amortissement à la vitesse horizontale pour simuler la friction. Vous appliquez la physique ici comme vous l'avez fait avec la gravité. Dans chaque cadre, une force de déplacement supplémentaire sera appliquée.

    Lorsque la force est retirée, vous voulez que le joueur s'arrête, mais pas immédiatement. Ici vous appliquez un amortissement 0.90; En d'autres termes, la réduction de la force horizontale globale de dix pour cent chaque trame.

  3. Dans la section trois, vous vérifiez le boolean (signifiant que l'écran est touché) et ajoutez la force forwardMove si approprié.
  4. Dans la section quatre, vous appliquez le serrage. Cela limite la vitesse de déplacement maximale du joueur à la fois dans les directions horizontale (vitesse de pointe), de montée (vitesse de saut) et de descente (chute).
    Ces valeurs d'amortissement et de serrage limitent la rapidité avec laquelle les choses se produisent dans le jeu. Il empêche également l'accumulation de problème de vitesse que vous avez rencontré dans la première partie du didacticiel.

    Vous voulez que le joueur ait une vitesse maximale et d'atteindre cette vitesse dans une seconde ou moins. De cette façon, les mouvements de votre joueur se sentent encore naturel, et fournir un niveau de contrôle. La force maximale que vous autoriserez est une valeur positive de 120, qui serait un quart de la largeur de l'écran par seconde.

    Si vous voulez augmenter le taux d'accélération de votre lecteur, augmentez la forwardMove variable et la valeur d' amortissement de 0,90 respectivement. Si vous souhaitez augmenter la vitesse maximale de votre lecteur, augmentez simplement la valeur 120. Vous coupez également la vitesse de saut à 250 et la vitesse de chute à 450.

Construire et exécuter. Vous devriez être en mesure de faire Koalio exécuter en avant en appuyant sur la moitié gauche de l'écran. Regarde que Koala va!

Sprite Kit Tutoriel: Comment faire un jeu de plateforme comme Super Mario Brothers && num; 8211 & semi;  Partie 2


Votre Mac le fera ... Sauter, sauter!

Le saut est la caractéristique distinctive du jeu de plateforme, et l'élément qui mène à la plupart du plaisir. Vous voulez vous assurer que le mouvement de saut est fluide et se sent bien. Dans ce tutoriel, vous allez mettre en œuvre l'algorithme de saut utilisé dans Sonic the Hedgehog, comme décrit ici.

Ajouter ce qui suit à la méthode de mise à jour à la (// code de saut va ici) ligne marquée:

  CGPoint jumpForce = CGPointMake (0,0, 310,0);  If (self.mightAsWellJump && self.onGround) {self.velocity = CGPointAdd (self.velocity, jumpForce);  } 

Si vous arrêtez ici (allez-y et construisez et courez si vous voulez), vous obtiendrez la vieille école Atari sauter. Chaque saut sera la même hauteur. Vous appliquez une force au joueur, et attendez que la gravité le retire.

Dans les jeux de plates-formes modernes, les utilisateurs ont beaucoup plus de contrôle sur le saut. Vous voulez contrôlable, complètement irréaliste (mais amusant comme l'enfer) Mario Bros / Sonic capacités de saut où vous pouvez changer les directions air milieu et même arrêter un saut court.

Pour ce faire, vous devez ajouter le composant variable. Il ya quelques façons de le faire, mais vous le feriez de la manière Sonic. Réglez l'algorithme de saut pour réduire la force de la poussée vers le haut si l'utilisateur cesse de presser l'écran. Remplacer le code ci-dessus par ce qui suit:

  CGPoint jumpForce = CGPointMake (0,0, 310,0);  Float jumpCutoff = 150,0;  If (self.mightAsWellJump && self.onGround) {self.velocity = CGPointAdd (self.velocity, jumpForce);  } Else if (! Self.mightAsWellJump && self.velocity.y> jumpCutoff) {self.velocity = CGPointMake (self.velocity.x, jumpCutoff);  } 

Ce code effectue une étape supplémentaire. Dans le cas où l'utilisateur cesse d' appuyer sur l'écran ( self.mightAsWellJump devient NO ), il vérifie la vitesse ascensionnelle du joueur. Si cette valeur est supérieure à la valeur de coupure, elle positionnera la vitesse sur la valeur de coupure.

Cela réduit efficacement le saut. De cette façon, vous aurez toujours un saut minimum (au moins aussi élevé que le jumpCutoff ), mais si vous continuez à tenir, vous aurez la force de saut complète disponible.

Construisez et exécutez maintenant. Cela commence à se sentir comme un vrai jeu! À partir de ce point, vous aurez probablement besoin de tester sur un périphérique réel au lieu du simulateur (si vous ne l'avez pas déjà fait) afin d'utiliser les deux «boutons».

Sprite Kit Tutoriel: Comment faire un jeu de plateforme comme Super Mario Brothers && num; 8211 & semi;  Partie 2


Vous avez Koalio courir et sauter, mais finalement il va exécuter à partir de l'écran immobilier. Il est temps de réparer ça!

Ajouter ce bout de code du jeu tutoriel à base de tuiles à GameLevelScene.m:

  - (void) setViewpointCenter: (CGPoint) position {NSInteger x = MAX (position.x, self.size.width / 2);  NSInteger y = MAX (position.y, self.size.height / 2);  X = MIN (x, (self.map.mapSize.width * self.map.tileSize.width) - self.size.width / 2);  Y = MIN (y, (self.map.mapSize.height * self.map.tileSize.height) - self.size.height / 2);  CGPoint realPosition = CGPointMake (x, y);  CGPoint centerOfView = CGPointMake (self.size.width / 2, self.size.height / 2);  CGPoint viewPoint = CGPointSubtract (centerOfView, actualPosition);  Self.map.position = viewPoint;  } 

Vous devez également importer le SKTUtils.h pour que cela fonctionne:

  #import "SKTUtils.h" 

Ce code fixe l'écran à la position du lecteur. Dans le cas où Koalio est au bord du niveau, il cesse de centrer sur lui, et serre le bord du niveau au bord de l'écran.

Il y a une modification ici du post original. Dans la dernière ligne, la carte est déplacée, au lieu de la couche. Cela est possible parce que le joueur est un enfant de la carte, donc quand le joueur se déplace à droite, la carte se déplace vers la gauche et le joueur reste au centre de l'écran.

Les méthodes tactiles reposent également sur une position dans la couche. Si vous avez déplacé votre calque à la place, vous devez prendre ces calculs en compte. C'est plus facile.

Pour une explication complète, reportez-vous au didacticiel du jeu basé sur les tuiles.

Vous avez besoin d'ajouter cet appel à la update à update la méthode:

  [Self setViewpointCenter: self.player.position]; 

Construisez et exécutez maintenant. Vous pouvez naviguer Koalio à travers le niveau entier!

Sprite Kit Tutoriel: Comment faire un jeu de plateforme comme Super Mario Brothers && num; 8211 & semi;  Partie 2


L'Agonie de la Défaite

Maintenant, vous pouvez passer à la manipulation des scénarios de jeu gagnant et perdant.

Aborder le scénario de perte d'abord. Il ya des dangers placés dans ce niveau. Si le joueur entre en collision avec un danger, le jeu prendra fin.

Puisque ces tuiles sont fixes, vous devez les manipuler comme vous avez manipulé les collisions murales dans le didacticiel précédent. Cependant, au lieu de résoudre les collisions, vous allez mettre fin au jeu. Vous êtes à la maison maintenant - il ne reste que quelques choses à faire!

Ajoutez la méthode suivante à GameLevelScene.m:

  - (void) handleHazardCollisions: (Player *) player {Indices NSInteger [8] = {7, 1, 3, 5, 0, 2, 6, 8};  Pour (NSUInteger i = 0; i <8; i ++) {NSInteger tileIndex = indices [i];  CGRect playerRect = [player collisionBoundingBox];  CGPoint playerCoord = [self.hazards coordForPoint: player.desiredPosition];  NSInteger tileColumn = tileIndex% 3;  NSInteger tileRow = tileIndex / 3;  CGPoint tileCoord = CGPointMake (playerCoord.x + (tileColumn - 1), playerCoord.y + (tileRow - 1));  NSInteger gid = [auto tileGIDAtTileCoord: tileCoord forLayer: self.hazards];  If (gid! = 0) {CGRect tileRect = [auto tileRectFromTileCoords: tileCoord];  If (CGRectIntersectsRect (playerRect, tileRect)) {[auto gameOver: 0];  ...... 

Tout ce code devrait être familière, car il est copié et collé à partir du checkForAndResolveCollisionsForPlayer:forLayer: méthode. La seule méthode qui est nouveau est gameOver . Cet appel prend un paramètre: 0 si le joueur a perdu, 1 si le joueur a gagné.

Vous utilisez les dangers couche au lieu de la couche de murs, de sorte que vous aurez besoin de mettre en place que dans le @interface au début du fichier de mise en œuvre en tant que propriété

  @property (nonatomic, strong) TMXLayer * dangers; 

Réglez - le dans initWithSize (juste après la ligne de configuration des murs):

  Self.hazards = [self.map layerNamed: @ "hasards"]; 

Une dernière chose que vous devez faire est d' appeler la méthode de update à update . Ajoutez cette ligne après l'appel à checkForAndResolveCollisionsForPlayer:forLayer: :

  [Self handleHazardCollisions: self.player]; 

Maintenant, si le joueur se heurte à une tuile de la couche de dangers, vous appelez gameOver . Cette méthode va juste vomir un bouton de redémarrage avec un message que vous avez perdu (ou gagné, selon le cas):

  - (void) gameOver: (BOOL) a gagné {// 1 self.gameOver = OUI;  // 2 NSString * gameText;  If (won) {gameText = @ "Vous avez gagné!";  } Else {gameText = @ "Vous avez perdu!";  } // 3 SKLabelNode * endGameLabel = [SKLabelNode labelNodeWithFontNamed: @ "Marker Felt"];  EndGameLabel.text = gameText;  EndGameLabel.fontSize = 40;  EndGameLabel.position = CGPointMake (self.size.width / 2.0, self.size.height / 1.7);  [Self addChild: endGameLabel];  // 4 UIButton * replay = [UIButton buttonWithType: UIButtonTypeCustom];  Replay.tag = 321;  UIImage * replayImage = [UIImage imageNamed: @ "replay"];  [Replay setImage: replayImage forState: UIControlStateNormal];  [Replay addTarget: action propre: @selector (replay :) forControlEvents: UIControlEventTouchUpInside];  Replay.frame = CGRectMake (self.size.width / 2.0 - replayImage.size.width / 2.0, self.size.height / 2.0 - replayImage.size.height / 2.0, replayImage.size.width, replayImage.size.height) ;  [Self.view addSubview: replay];  } - (void) replay: (id) sender {// 5 [[self.view viewWithTag: 321] removeFromSuperview];  // 6 [self.view presentScene: [[GameLevelScene alloc] initWithSize: self.size]];  } 
  1. La première ligne définit un nouveau booléen appelé gameOver . Vous utilisez cette valeur pour arrêter la méthode de mise à jour permettant au lecteur de continuer à se déplacer et d'interagir avec le niveau. Vous verrez cela dans une minute.
  2. Ensuite, vous attribuez une chaîne indiquant si le joueur a gagné ou perdu.
  3. Ensuite, le code crée un libellé et attribue une chaîne en fonction de si l'utilisateur a gagné ou perdu. Kit Sprite a une pratique SKNode sous - classe conçue pour les étiquettes comme celle - ci.
  4. Enfin, vous créez un UIButton que l'utilisateur peut appuyer sur pour redémarrer le niveau encore (appel de la replay: méthode). Cela devrait vous sembler familier si vous avez utiliser UIButtons . La seule chose qui peut sembler étrange est que vous définissez la propriété tag. Ceci permet de rechercher le bouton plus tard et de le supprimer lorsque vous rechargez la scène.
  5. Dans la méthode de lecture, vous obtenez d' abord l' UIButton par son étiquette et la retirer de la vue. Vous ne voulez pas que ce bouton pendent autour pendant la session de jeu suivante.
  6. Enfin, vous appelez presentScene sur une instance nouvellement allouée de l' GameLevelScene , cette recharge la scène avec une nouvelle copie.

La seule autre chose que vous devez faire est d' ajouter le gameOver booléen à la GameLevelScene classe. Ajouter à la @interface au début de la GameLevelScene.m:

  @property (nonatomic, assign) BOOL gameOver; 

Ajoutez la ligne suivante au début de la méthode de mise à jour:

  If (self.gameOver) return; 

Une dernière étape. Faites glisser replay.png et [email protected] de Resources \ sprites.atlas vers Resources afin de faire une copie des fichiers qui se trouvent en dehors de sprites.atlas. Ceci est nécessaire pour que UIKit puisse trouver l'image pour afficher l'UIButton (UIKit ne connaît rien des atlas de texture de Sprite Kit).

Allez-y et construisez et courez maintenant, et trouvez des pointes pour sauter dessus! Vous devriez voir quelque chose comme ceci:

Sprite Kit Tutoriel: Comment faire un jeu de plateforme comme Super Mario Brothers && num; 8211 & semi;  Partie 2


Ne répétez pas trop cela cependant, ou l'agence de protection des animaux pourrait venir après vous! ......

La fosse de l'enfer

Maintenant pour le scénario où Koalio tombe un trou. Dans ce cas, vous terminerez le jeu.

Comme le code est maintenant, il va planter. (Horrors!) Le code lance une erreur d'assertion TMXLayerInfo. C'est là que vous devez intervenir. Cela se produit dans le checkForAndResolveCollisionsForPlayer:forLayer: méthode lorsque vous appelez tileGIDAtTileCoord: .

Ajouter le code suivant dans GameLevelScene.m, dans le checkForAndResolveCollisionsForPlayer:forLayer: méthode, après la CGPoint playerCoord = [layer coordForPoint:player.desiredPosition]; ligne;

  If (playerCoord.y> = self.map.mapSize.height - 1) {[auto gameOver: 0];  retour;  } 

Ce code va exécuter le gameOver routine et d' abandonner le processus de construction du réseau de briques. Vous abandonnerez également la boucle de collision et éviterez tout problème qui pourrait en résulter.

Les handleHazardCollisions boucles aussi à travers les carreaux. Vous devez ajouter un code à cette méthode pour l'empêcher de le faire si le Koala a sauté par un trou. Ajoutez la ligne suivante au début de cette méthode:

  If (self.gameOver) return; 

Construisez et exécutez maintenant. Trouver une fosse pour sauter, et. . . Pas d'accident! Le jeu se termine comme il se doit.

Sprite Kit Tutoriel: Comment faire un jeu de plateforme comme Super Mario Brothers && num; 8211 & semi;  Partie 2


Gagnant!

Maintenant, manipulez le cas où votre héros Koalio gagne le jeu!

Sprite Kit Tutoriel: Comment faire un jeu de plateforme comme Super Mario Brothers && num; 8211 & semi;  Partie 2

Tout ce que vous allez faire est de surveiller la position X du joueur et de déclencher la condition de "victoire" quand il franchit le seuil (qui sera à la fin du niveau). Ce niveau est d'environ 3400 pixels de large. Vous allez déclencher une condition de «victoire» lorsque le joueur atteindra le pixel 3130.

Ajouter une nouvelle méthode dans GameLevelScene.m comme suit:

  - (void) checkForWin {if (self.player.position.x> 3130.0) {[self gameOver: 1];  ...... 

Ajouter la checkForWin méthode après les handleHazardCollisions appellent à jour:

  [Vérification de soi]; 

Construisez et exécutez maintenant. Naviguez votre héros Koalio à travers le niveau, et si vous pouvez le faire à la fin, vous aurez ce message:

Sprite Kit Tutoriel: Comment faire un jeu de plateforme comme Super Mario Brothers && num; 8211 & semi;  Partie 2


Musique gratuite et effets sonores

Vous savez à quelle heure il est - le temps pour la musique gratuite et les effets sonores!

Let'd plonger droit dans elle. Vous utiliserez les méthodes Sprite Kit intégrées pour les effets sonores et le moteur SKTAudio pour la musique de fond. Ajouter cette au sommet de GameLevelScene.m:

  #import "SKTAudio.h" 

Puis ajouter cette ligne à la initWithSize méthode du GameLevelScene (avant self.userInteractionEnabled = YES; ) :.

  [[SKTAudio sharedInstance] playBackgroundMusic: @ "level1.mp3"]; 

Cela vous donne une belle musique de jeu. Merci à Kevin Macleod d'Incompetech.com pour avoir composé la musique (Brittle Reel). Il a des tonnes de musique sous licence CC là!

Maintenant ajoutez un son de saut. Accédez au Player.m et ajouter ce qui suit à la update à update la méthode dans le code de saut:

  If (self.mightAsWellJump && self.onGround) {self.velocity = CGPointAdd (self.velocity, jumpForce);  [RunAction auto: [SKAction playSoundFileNamed: @ "jump.wav" waitForCompletion: NO]];  } Else if (! Self.mightAsWellJump && self.velocity.y> jumpCutoff) {self.velocity = CGPointMake (self.velocity.x, jumpCutoff);  } 

Enfin, jouez un son quand Koalio tombe dans un trou ou quand il frappe un danger. Faites cela dans la gameOver méthode GameLevelScene.m:

  - (void) gameOver: (BOOL) gagné {self.gameOver = YES;  [RunAction auto: [SKAction playSoundFileNamed: @ "hurt.wav" waitForCompletion: NO]];  NSString * gameText; 

Construisez et exécutez, et profitez de vos nouveaux morceaux groovy.

Et c'est tout. Vous avez écrit un jeu de plateforme. Toi. Sont. Génial!

Où aller en partant d'ici?

Voici le SuperKoalioPt2Fin final avec tout le code de ce tutoriel Sprite Kit.

Il y a beaucoup plus de choses qui auraient pu être couvertes: tout ce qui va des collisions ennemies et de l'IA, aux capacités de mouvement améliorées (glissière murale, double saut, etc.), aux lignes directrices de conception de niveau.

Et en parlant de cela ... une bonne nouvelle à ce sujet!

Le kit de démarrage de jeu Platformer

Nous venons de lancer la deuxième édition du kit de démarrage de jeu Platformer, qui est entièrement mis à jour pour Sprite Kit!

Voici ce que vous apprendrez dans le kit de démarrage de jeu Platformer:

  • Comment gérer et charger plusieurs niveaux
  • Comment faire un écran de sélection de niveau défilable et déverrouillable
  • Comment facilement Sprite Kit fonctionne avec UIKit Storyboards
  • Comment utiliser efficacement les feuilles de sprite, les animations, les tilesets et travailler avec pixel art!
  • Comment créer une machine d'état pour gérer les animations et les comportements de caractère / ennemi
  • Plus sur la façon de faire incroyable et amusant tuiles à base de moteurs de physique!
  • Comment créer un joystick à l'écran et HUD
  • Comment ajouter un support de contrôleur matériel
  • Conception de niveau pour plateformes
  • Comment construire l'IA ennemie et les comportements dynamiques.
  • Entrevues avec les développeurs de plusieurs jeux de plateforme iOS avec astuces et astuces
  • . . . Et beaucoup, beaucoup plus!

Vous pouvez consulter la deuxième édition du kit de démarrage de jeu Platformer sur le magasin raywenderlich.com.

En attendant, n'oubliez pas les ressources recommandées à la fin de la partie 1 de ce didacticiel.

J'espère que vous avez apprécié votre physique et sont plus inspirés que jamais à construire votre propre jeu de plateforme!