Le livre «L'unité en action. Développement multiplateforme en C #. 2e int. édition »

image Salut, habrozhiteli! La deuxième édition d'Unity in Action a été entièrement repensée pour vous présenter de nouvelles approches et idées qui vous aident à tirer le meilleur parti d'Unity pour le développement de jeux. Une plus grande attention est accordée à la conception de jeux bidimensionnels, dont les concepts fondamentaux peuvent être mis en pratique par le lecteur et construire un jeu de plateforme bidimensionnel complexe. Ce livre peut être appelé en toute sécurité une introduction à Unity pour les programmeurs professionnels. Joseph Hawking donne aux personnes ayant une expérience de développement toutes les informations nécessaires pour les aider à apprendre rapidement un nouvel outil et à commencer à créer de nouveaux jeux. Et il est préférable d'apprendre de projets spécifiques et de tâches pratiques.

L'unité est souvent présentée comme un ensemble de composants qui ne nécessitent pas de programmation, ce qui est fondamentalement faux. Pour créer un jeu réussi, il faut beaucoup: l'excellent travail de l'artiste, ses compétences en programmation, une histoire intéressante, un gameplay fascinant, un travail amical et coordonné de l'équipe de développement. Et nous ne devons pas oublier la visualisation impeccable et le travail de haute qualité sur toutes les plates-formes - des consoles de jeux aux téléphones mobiles. Unity combine un moteur puissant, des opportunités de programmation professionnelles et des concepteurs créatifs, vous permettant de réaliser les projets les plus incroyables et ambitieux.
Maîtrisez l'unité et commencez à créer vos propres jeux plus rapidement!

Structure du livre


Le chapitre 1 présente Unity, un environnement de développement de jeux multiplateforme. Vous apprendrez le système de composants de base sous-jacent à Unity et apprendrez également à écrire et à exécuter des scripts de base.

Dans le chapitre 2, nous allons passer à l'écriture d'un programme qui montre le mouvement dans un espace tridimensionnel, en examinant simultanément des sujets tels que la souris et le clavier. La détermination de la position des objets dans l'espace tridimensionnel et le fonctionnement de leur rotation sont expliqués en détail.

Dans le chapitre 3, nous transformerons le programme de démonstration en un jeu de tir à la première personne en démontrant la méthode d'émission de faisceau et les bases de l'intelligence artificielle. L'émission de rayons (nous créons une ligne dans la scène et voyons ce qu'elle recoupe) est requise dans toutes les versions de jeux.

Le chapitre 4 est consacré à l'importation et à la création de ressources de jeu. C'est le seul chapitre du livre dans lequel le code ne joue pas un rôle central, car chaque projet nécessite des modèles et des textures (de base).

Le chapitre 5 vous apprend à créer des jeux à deux dimensions dans Unity. Bien que cet outil était initialement destiné uniquement à la création de graphiques en trois dimensions, il prend désormais parfaitement en charge les graphiques en deux dimensions.

Le chapitre 6 poursuit l'explication des principes de création de jeux en deux dimensions à l'aide d'un exemple de jeu de plateforme. En particulier, nous implémentons des contrôles, simulant l'environnement physique et l'animation du personnage.

Le chapitre 7 présente les dernières fonctionnalités de l'interface graphique dans Unity. L'interface utilisateur est requise pour tous les jeux et les dernières versions d'Unity disposent d'un système de création d'interface utilisateur amélioré.

Dans le chapitre 8, nous allons créer un autre programme qui montre le mouvement dans l'espace tridimensionnel, mais cette fois du point de vue d'un observateur extérieur. L'implémentation de contrôles tiers vous donnera une idée des opérations mathématiques clés dans l'espace tridimensionnel, en plus, vous apprendrez à travailler avec des personnages animés.

Le chapitre 9 montre comment implémenter des éléments et des éléments interactifs dans le jeu. Le joueur aura plusieurs façons d'utiliser ces appareils, notamment en touchant directement, en touchant les déclencheurs à l'intérieur du jeu ou en appuyant sur le bouton du contrôleur.

Le chapitre 10 enseigne l'interaction avec le World Wide Web. Vous apprendrez comment envoyer et recevoir des données à l'aide de technologies standard telles que les requêtes HTTP pour recevoir des données XML à partir d'un serveur.

Au chapitre 11, vous apprendrez à ajouter du son aux jeux. Dans Unity, les effets sonores courts et les longs phonogrammes musicaux sont remarquablement pris en charge; les deux options sonores sont essentielles pour presque tous les jeux vidéo.

Dans le chapitre 12, nous rassemblerons des fragments de différents chapitres pour obtenir un jeu à la fin. De plus, vous apprendrez à programmer des commandes manipulées avec la souris et à sauvegarder la partie.

À propos de l'auteur


Joseph Hawking vit à Chicago et développe des logiciels pour les environnements interactifs. Il travaille pour InContext Solutions. La première édition de ce livre a été écrite pendant son séjour à Synapse Games. Il a également enseigné le développement de jeux à l'Université de l'Illinois, au Chicago Institute of the Arts et au Columbia College. Son site Web est www.newarteest.com .

Extrait. 6.4.2. Poussez


Apprenons au personnage à sauter. Pour ce faire, lorsque vous appuyez sur le bouton Jump, le personnage doit pousser vers le haut. La vitesse de déplacement horizontal est éditée directement dans le code, et avec le mouvement vertical nous agirons différemment afin de ne pas interférer avec l'action de la gravité. Le fait est que plusieurs forces peuvent affecter un objet en même temps, nous y ajoutons donc une force ascendante. Collez ce code dans le script de mouvement.

image

Faites attention à la commande AddForce (). Une force montante est ajoutée au composant Rigidbody en mode pulsé; l'impulsion est une poussée soudaine, contrairement à une force à action continue. Dans le code, une telle secousse se produit après avoir appuyé sur la barre d'espace. Dans le même temps, la gravité continue d'agir sur le personnage, grâce à quoi, après le saut, il décrit un bel arc.

Mais, peut-être, vous avez déjà fait attention à un inconvénient, dont nous travaillons actuellement à l'élimination.

6.4.3. Reconnaissance de surface


Le contrôle de saut a un petit inconvénient: la possibilité de sauter en vol (lorsque le personnage a déjà sauté ou lorsqu'il tombe). Appuyer sur la barre d'espace, même dans ce cas, donnera une impulsion, bien que cela ne puisse pas être fait. Le contrôle de saut ne devrait fonctionner que pour un personnage se tenant sur la plate-forme. Vous devez donc apprendre à déterminer si un personnage est à la surface.

image

image


Ce code prive le personnage de la capacité de sauter en l'air. Il vérifie s'il y a un collisionneur sous le personnage et prend en compte le résultat du contrôle dans la condition de saut. Tout d'abord, les limites de la primitive de collision de notre personnage sont déterminées, puis les collisionneurs qui se chevauchent sont recherchés dans la zone de la même largeur directement sous les jambes du personnage. Le résultat de la vérification est stocké dans la variable mise à la terre et utilisé dans l'instruction conditionnelle.

6.5. Fonctionnalités de plateforme supplémentaires


Ainsi, nous avons compris les nuances de la mise en œuvre des mouvements, de la marche et du saut du personnage. Nous compléterons la démo de notre jeu avec de nouvelles fonctionnalités environnementales.

CONCEVOIR DES NIVEAUX AVEC TILEMAP_ ______
Dans le cadre du projet, le sol et les plateformes ont été créés à partir de rectangles blancs vides. La version finale du jeu nécessite des graphismes plus élaborés, mais il est peu probable que l'ordinateur puisse traiter une image de la taille d'un niveau entier. Le plus souvent, ce problème est résolu à l'aide de l'outil tilemap. Il vous permet de concevoir des images sur le principe d'une grille. Voici à quoi ça ressemble.

image

Attention: la carte est entièrement composée de petites cellules. C'est ce qui vous permet de couvrir la totalité de l'écran avec une image sans avoir recours à des images trop grandes.

L'outil officiel de tilemap a été ajouté aux dernières versions de l'application Unity. Vous pouvez également utiliser des bibliothèques externes, par exemple Tiled2Unity, un système qui importe des cartes créées dans l'éditeur de tuiles populaire (et gratuit).

6.5.1. Plates-formes inclinées et unilatérales


Maintenant, dans notre jeu, il n'y a qu'un étage ordinaire et un bloc à travers lequel vous pouvez sauter. Mais il existe d'autres options de plate-forme. Nous les utiliserons pour diversifier la scène. Commençons par la section inclinée. Créez une copie de l'objet Floor, donnez-lui le nom Slope, entrez les valeurs 0, 0, -25 dans les champs de transformation de rotation et déplacez-le vers la gauche, en affectant les valeurs de –3.47, –1.27, 0 aux coordonnées de la transformation de transformation.

Commencez à jouer la scène. En cours de mouvement, le personnage glisse correctement de haut en bas. Mais en raison de la gravité, il commence à glisser vers le bas et dans un état statique. Pour résoudre ce problème, vous devez désactiver la simulation de la gravité dans les cas où le personnage (a) est sur la plate-forme, (b) est au repos. Heureusement, nous lui avons déjà appris à reconnaître les surfaces et pouvons l'utiliser dans un nouveau morceau de code. Vous devez ajouter une seule ligne.

image

Après avoir modifié le code de mouvement, le personnage a commencé à se comporter correctement sur des surfaces inclinées. Ajoutez maintenant la plate-forme à sens unique. Un personnage peut non seulement se tenir dessus, mais aussi le sauter. Lorsque vous essayez de sauter à travers une plate-forme régulière, le personnage vous frappera la tête.

Les plateformes unilatérales se trouvent souvent dans les jeux, donc Unity a un moyen de les implémenter. Si vous vous en souvenez, plus tôt lors de l'ajout du composant Platform Effector, nous avons décoché la case Use One Way. Et maintenant nous en avons besoin! Encore une fois, créez une copie de l'objet Floor, donnez-lui le nom Platform, entrez les valeurs 10, 1, 1 dans les champs pour l'échelle et placez l'objet résultant au-dessus du sol, en spécifiant les coordonnées -1.68, 0.11, 0 pour cela. Et assurez-vous de cocher la case Use One Way dans la section Platform Effector 2D.

Le personnage pourra voler à travers la plate-forme en sautant, mais cela empêchera le mouvement vers le bas. Un seul inconvénient doit être résolu. Il est illustré sur la fig. 6.11. Dans Unity, l'image-objet de la plate-forme peut être affichée au-dessus du personnage (pour le voir plus facilement, définissez la variable jumpForce sur 7. Vous pouvez modifier la coordonnée Z du personnage comme dans le chapitre précédent, mais cette fois, nous le ferons différemment. Le composant responsable du rendu sprites, il existe un ordre de tri qui détermine quel sprite sera affiché en haut Sélectionnez l'objet Player et définissez le paramètre Order in Layer dans la section Sprite Renderer sur 1.

image

Maintenant, dans la scène, il y a un fragment incliné du sol et une plate-forme unidirectionnelle. Mais il existe une autre option inhabituelle, qui est implémentée un peu plus dur que les plates-formes que vous connaissez déjà. Voyons comment cela se fait.

6.5.2. Plateformes mobiles


La troisième version du genre inhabituel, courante dans les jeux de plateforme, est le déplacement des plateformes. Pour ajouter une telle plateforme à notre jeu, vous devrez, premièrement, écrire un nouveau script qui contrôle ses mouvements, et deuxièmement, éditer le script pour le mouvement du personnage. Dans le nouveau scénario, la plateforme se déplacera entre deux points: début et fin. Créez un script C # appelé MovingPlatform et ajoutez-y le code suivant.

image

image

DESSIN GIZMOS PERSONNALISÉS _________________________________________
La plupart du code écrit lors de la lecture d'un livre programme ce qui se passe dans les jeux. Mais les scripts Unity vous permettent d'influencer l'éditeur intégré. Beaucoup ne savent pas que vous pouvez ajouter des menus et des fenêtres supplémentaires à Unity. De plus, avec leur aide, des objets auxiliaires sont créés dans l'onglet Scène, appelés conteneurs dimensionnels (gizmos).

Vous avez déjà rencontré des conteneurs pour vrac. Vous vous souvenez des parallélépipèdes verts désignant les collisionneurs? Ils sont intégrés à Unity, mais personne ne vous dérange pour écrire un script pour votre propre conteneur global. Par exemple, dans l'onglet Scène, créez une ligne correspondant à la trajectoire de la plate-forme. Il est illustré sur la figure.

image

Le code qui dessine une telle ligne est très simple. En haut du code qui affecte l'interface Unity, ajoutez la ligne à l'aide de UnityEditor; (car la plupart des fonctions de l'éditeur se trouvent dans cet espace de noms particulier), mais ce n'est pas obligatoire dans ce cas. Ajoutez simplement cette méthode à votre script MovingPlatform:

... void OnDrawGizmos() { Gizmos.color = Color.red; Gizmos.DrawLine(transform.position, finishPos); } ... 

À propos de ce code, il est important de comprendre ce qui suit. Tout d'abord, toute l'action est effectuée à l'intérieur de la méthode OnDrawGizmos (). Il s'agit du nom du système, tout comme les noms des méthodes de démarrage et de mise à jour. Deuxièmement, nous ajoutons deux lignes de code à cette méthode: la première définit la couleur de la ligne et la seconde force Unity à tracer une ligne de l'endroit où se trouve la plate-forme jusqu'au point cible.

Faites glisser ce script sur la plateforme. Commencez à jouer la scène, et vous verrez que maintenant la plate-forme se déplace d'un côté à l'autre! Il reste à éditer le script qui contrôle les mouvements du personnage afin de l'associer à une plateforme en mouvement. Apportez les modifications suivantes.

image

Maintenant, le personnage qui saute sur la plate-forme se déplace avec lui. En fait, tout se résumait à transformer le personnage en un enfant de la plate-forme. J'espère que vous vous souvenez qu'après la formation de la relation hiérarchique, l'enfant commence à bouger après le parent. La méthode GetComponent () du Listing 6.7 vérifie si la surface reconnue est une plateforme mobile. Dans le cas d'un résultat de test positif, elle devient un ancêtre par rapport au personnage; sinon, le personnage est déconnecté de tout ancêtre.

Mais il y a un problème. Le personnage hérite de la plateforme et de la transformation de mise à l'échelle, ce qui affecte sa taille. La situation peut être corrigée par la transformation inverse (réduction de l’échelle du personnage, compensant l’augmentation de la taille provoquée par la plateforme).

image

image

Mathématiquement, la compensation de mise à l'échelle semble très simple: le joueur se voit attribuer 1 divisé par l'échelle de la plate-forme. Et quand un peu plus tard l'échelle du joueur est multipliée par l'échelle de la plate-forme, le résultat est 1. Le seul moment difficile dans ce cas est de prendre en compte le signe qui détermine la direction du mouvement; peut-être vous souvenez-vous qu'en fonction de cela, le personnage se tournait d'un côté à l'autre.

Nous avons donc ajouté une plateforme mobile au jeu. Il reste une touche finale, et la version de démonstration sera complètement prête ...

»Plus d'informations sur le livre sont disponibles sur le site Web de l'éditeur
» Contenu
» Extrait

20% de réduction sur les colporteurs - Unity

PS: 7% du coût du livre ira à la traduction de nouveaux livres informatiques, la liste des livres remise ici à l'imprimerie.

Source: https://habr.com/ru/post/fr440292/


All Articles