Construisez Arkanoid avec Unity audio, nouveaux niveaux et déploiement

Ce que vous allez créer

Dans cette série de didacticiels, nous allons vous montrer comment recréer le jeu classique Arkanoid (ou Breakout) dans Unity, à l'aide des outils 2D natifs de Unity. Dans chaque article, nous nous concentrerons sur une partie spécifique du jeu; Dans cet article, nous allons ajouter des sons et de la musique, créer de nouveaux niveaux et déployer le jeu sur différents appareils et plateformes..

Où nous nous sommes laissés

Dans les tutoriels précédents, vous avez configuré le projet, codé les comportements des objets principaux et mis en œuvre un système de score et de vies. Si vous n'avez pas encore terminé les tutoriels précédents, nous vous recommandons fortement de le faire avant de continuer..

Aperçu final

Jetez un coup d'oeil à cette démo pour voir ce que nous visons dans toute la série:

Sons et Musique

Dans le premier message de cette série, vous avez importé plusieurs fichiers audio et musicaux. Il est maintenant temps de les utiliser. dans le Des sons dossier, il y a trois fichiers:

  • hit.wav: à utiliser à chaque collision de balle.
  • perdre.wav: à utiliser quand le joueur perd une vie.
  • point.wav: utiliser alors le joueur marque un point.

Nous devons modifier les deux Joueur et Ballon scripts pour jouer ces effets. Commençons par le Ballon objet. 

Au départ, nous devons ajouter un composant audio aux objets du jeu. Sélectionnez la balle et ajoutez un Source audio (Hiérarchie> Inspecteur> Ajouter un composant). Notez que vous devriez décocher l'option Joue sur éveillé, si c'est coché; sinon, les effets sonores seront lus automatiquement au lancement de la scène..

Vous avez un composant audio; Maintenant, vous devez modifier le script de la balle pour interagir avec le composant lui-même. Créez une nouvelle variable pour le fichier son. Puisque vous voulez accéder au son dans l’éditeur, la variable doit être Publique:

public AudioClip hitSound;

Nous allons faire en sorte que la balle produise un son chaque fois qu’elle se heurte à quelque chose en étant active. Pour ce faire, nous utilisons le OnCollisionEnter2D méthode, vérifiez si la balle est active et lisez le clip si c'est le cas:

annuler OnCollisionEnter2D (collision Collision2D) if (ballIsActive) audio.PlayOneShot (hitSound); 

Notez que vous devez vérifier si la balle est active avant de jouer le son. Dans le cas contraire, le son continuera à jouer lorsque la balle est inactive.

Passons maintenant à l'éditeur et vérifiez que vous avez un nouveau paramètre, Hit Sound, dans le script de balle:

Faites glisser le hit.wav fichier de la Projet onglet et déposez-le sur le Hit Sound paramètre du script. Vous devriez voir quelque chose comme ça:

presse Jouer, et vérifiez que vous entendez maintenant le son correct chaque fois que la balle rebondit sur quelque chose.

Insérons maintenant les deux sons restants dans le jeu. Insérer un autre Source audio, mais cette fois à l'objet joueur. Encore une fois, décochez la Joue sur éveillé option.

Maintenant, ouvrez le script du lecteur et créez deux variables supplémentaires. La première variable concerne le son joué lorsque le joueur marque des points et la seconde le son joué lorsque le joueur perd une vie. Les deux doivent être déclarés publics.

public AudioClip pointSound; AudioClip public lifeSound;

Puisque vous avez maintenant les objets, modifions le addPoints méthode pour jouer le son chaque fois qu'il est appelé. Comme auparavant, vous devez appeler le PlayOneShot méthode de la l'audio objet:

void addPoints (points int) joueurPoints + = points; audio.PlayOneShot (pointSound); 

Maintenant, faites la même chose dans le TakeLife méthode:

TakeLife () vide () playerLives--; audio.PlayOneShot (lifeSound); 

Enregistrez le script et passez une nouvelle fois dans l'éditeur. Faites glisser les deux fichiers sonores restants sur chaque nouveau son du lecteur (point et la vie). Vous devriez avoir quelque chose comme l'image suivante:

À présent, Jouer le jeu et vérifiez que les trois sons jouent quand on s'y attend.

Musique de fond

Malgré les effets sonores, la sensation générale en jouant est assez vide. Modifions cela en ajoutant une musique de fond différente pour chaque niveau..

dans le Hiérarchie onglet, sélectionnez le Contexte objet et ajouter un composant source audio:

Maintenant, faites glisser Jaunty Gumption.mp3 du Projet onglet et déposez-le sur le Clip audio paramètre de la Source audio composant. Cette fois, vous devriez quitter le Joue sur éveillé paramètre vérifié, car nous voulons que la musique commence à jouer au début de notre niveau. Allume le Boucle option également; cela fera jouer la musique sur une boucle infinie tant que le niveau est joué.

Allez-y et appuyez sur Jouer! Votre jeu comprend maintenant le son et la musique.

Niveaux

Afin de terminer le jeu, nous allons aborder deux points:

  • Lorsque le joueur détruit tous les blocs, il doit passer au niveau suivant..
  • Lorsque le joueur est à court de vies, le jeu devrait redémarrer.

Commençons par créer un deuxième niveau pour le jeu. Au lieu de créer un niveau à partir de zéro, nous pouvons simplement dupliquer le premier niveau et modifier les objets de ce nouveau niveau.

Pour ce faire, il vous suffit de sauvegarder votre scène en tant que nouvelle. Cliquez sur Fichier> Enregistrer la scène sous… , nomme le Niveau 2, et placez-le dans le Niveaux dossier. 

Pour que ce niveau soit différent du premier, nous devrions idéalement modifier les positions de tous les blocs. N'hésitez pas à le faire vous-même mais, dans le cadre de ce tutoriel, nous ne changerons que l'image de fond et le niveau de musique..

Sélectionnez le Contexte du Hiérarchie et passer à la Inspecteur. Faites glisser le Contexte2 fichier de la Sprites \ Fonds dossier à la Lutin composante de la Contexte objet du jeu:

Pour changer la musique de fond, il vous suffit de faire glisser le fichier de musique souhaité dans le dossier. Clip audio paramètre. Pour le niveau 2, utilisez le Singes qui tournent Monkeys.mp3 fichier.

Si vous appuyez sur le Jouer bouton, vous pouvez tester ce nouveau niveau. Comme vous pouvez le constater, il se comporte de la même manière que le premier, mais avec un fond et une musique différents. Le deuxième niveau étant prêt, il est temps maintenant de gérer les deux situations identifiées précédemment..

Dans le script de palette du joueur, créez une nouvelle méthode appelée WinLose. Ici, nous allons vérifier quand le joueur perd toute sa vie et réagir en conséquence: si playerLives atteint 0, nous appelons simplement le Application.LoadLevel méthode et recharger le premier niveau.

void WinLose () // redémarrer le jeu si (playerLives == 0) Application.LoadLevel ("Level1"); 

Ensuite, nous traiterons le cas où tous les blocs sont détruits, nous voulons donc passer au niveau suivant. Pour déterminer le nombre de blocs restants, nous pouvons utiliser le FindGameObjectsWithTag méthode à nouveau, cette fois la recherche d'objets dans le niveau actuel étiqueté Bloc. Si le tableau résultant a une longueur de 0, alors nous savons qu'il est temps de charger le niveau suivant.

Comme ce tutoriel n’a que deux niveaux, si le joueur gagne le deuxième niveau, nous fermerons simplement le jeu (en appelant Application.Quit).

L'extrait complet pour le WinLose méthode est: 

void WinLose () // redémarrer le jeu si (playerLives == 0) Application.LoadLevel ("Level1");  // blocs détruits si (((GameObject.FindGameObjectsWithTag ("Block"))). Length == 0) // vérifie le niveau actuel de si (Application.loadedLevelName == "Level1") Application.LoadLevel ("Level2") ;  else Application.Quit (); 

Nous appellerons le WinLose méthode dans le Mettre à jour méthode du script du joueur, ajoutez-le simplement à la fin de la méthode. Pour la simplicité, la complète Mettre à jour méthode est:

void Update () // mouvement horizontal playerPosition.x + = Input.GetAxis ("Horizontal") * playerVelocity; // quitte le jeu si (Input.GetKeyDown (KeyCode.Escape)) Application.Quit ();  // met à jour l'objet de jeu transform transform.position = playerPosition; // frontières if (playerPosition.x < -boundary)  transform.position = new Vector3 (-boundary, playerPosition.y, playerPosition.z);  if (playerPosition.x > borne) transform.position = new Vector3 (borne, playerPosition.y, playerPosition.z);  // Vérifier l'état du jeu WinLose (); 

Revenez à l'éditeur. Pour faire le WinLose Pour que la méthode fonctionne correctement, vous devez marquer les blocs dans le jeu. dans le Projet onglet, allez à la Préfabriqués dossier et sélectionnez un bloc. Tous les blocs sont actuellement non étiquetés, et il n'y a pas Bloc tag, nous devons donc le créer. Clique le Étiquette bouton et sélectionnez le Ajouter une étiquette option. Ajouter une nouvelle balise appelée Bloc:

Le jeu est maintenant prêt pour les tests. Cliquez sur Jouer et l'essayer!

Construire et déployer le projet

La construction et le déploiement du projet sont généralement les dernières étapes du développement d’un projet. Dans cette section, vous allez apprendre à créer une version finale et les configurations nécessaires à son exécution dans un environnement multi-plateforme..

Tout d'abord, vous devez ajouter toutes les scènes à une construction unique. Cliquez sur Fichier> Paramètres de construction. Une nouvelle fenêtre apparaîtra; la Scènes en construction la zone sera probablement vide, comme ceci:

Si tel est le cas, vous devez ajouter les scènes créées précédemment. Cliquez sur Ajouter courant et une scène sera ajoutée à la Scènes en construction surface:

Dans notre exemple, nous avons ajouté le premier niveau. Fermez cette fenêtre et sélectionnez le deuxième niveau de l’éditeur. Cliquez sur Fichier> Paramètres de construction à nouveau, et cliquez Ajouter courant une fois de plus:

Si vous avez ajouté le deuxième niveau avant le premier, ne vous inquiétez pas: utilisez simplement la souris pour échanger leurs positions dans l'interface (car la première scène de la liste est celle qui sera chargée lors du lancement du jeu)..

Une fois les deux niveaux ajoutés dans le bon ordre, cliquez sur Construire et exécuter et vous devriez voir une construction correcte de votre jeu final.

Comme vous pouvez le constater, vous pouvez choisir de déployer votre jeu sur plusieurs plates-formes, à savoir:

  • Navigateurs Web
  • PC, Mac et Linux
  • Systèmes d'exploitation mobiles: iOS, Android, Blackberry et Windows Phone 8
  • Google Native Client
  • Consoles: Xbox 360, PS3 et Wii
  • Windows Store

Le grand avantage de l’utilisation de Unity est que vous n’avez besoin de programmer votre jeu qu’une seule fois. Ensuite, en utilisant le moteur, vous pouvez le déployer rapidement et facilement sur l’une des plateformes susmentionnées..

Cependant, notez que certaines plates-formes et systèmes d'exploitation ont certaines limitations en termes de règles de déploiement. Par exemple, pour déployer sur des appareils iOS, vous devez disposer d'un système Mac et d'une licence de développement appropriée. Vous avez également besoin de licences pour déployer sur PS3 et Xbox.

Défis

Maintenant que vous avez terminé ce didacticiel, nous pensons que vous êtes prêt à relever certains défis. Vous pouvez voir ces défis comme une quête de connaissances maîtrisées.

  1. Ajoutez différents styles et configurations de blocs: l'objectif est de définir plus de blocs avec différentes propriétés, telles que différentes valeurs de score et différents nombres de résultats à tuer.
  2. Créez un niveau original: un troisième niveau complètement différent des deux tutoriels. Vous pouvez utiliser un arrière-plan différent, une musique différente et une disposition de bloc différente. Nous aimerions voir les captures d'écran dans la section commentaire!
  3. Implémentez un mode multijoueur en utilisant le même clavier: ajoutez la logique nécessaire pour gérer les entrées à partir d'autres touches du clavier et affichez le score et la vie du deuxième joueur de l'interface..

Conclusion

Ceci conclut cette série de didacticiels sur la construction d’Arkanoid à l’aide des outils 2D d’Unity. Nous avons couvert beaucoup de terrain dans cette courte série, et vous devriez maintenant en savoir assez pour vous lancer dans vos propres jeux 2D. Si vous avez des questions ou des commentaires, comme toujours, n'hésitez pas à nous laisser un mot dans les commentaires..