Publicité
Une caractéristique surprenante de l'économie Internet est la montée des jeux vidéo indépendants. Une fois le domaine exclusif des studios triple-A de plusieurs millions de dollars, un certain nombre d'outils ont été développés qui mettre des ressources de développement de jeux modernes entre les mains d'individus ou de petites collections ad hoc de programmeurs et de concepteurs. Nous avons déjà discuté de la meilleurs jeux indépendants 10 jeux indépendants si bons, vous oublierez qu'ils sont indépendants du toutIl peut cependant arriver que vous souhaitiez quelque chose de différent de la norme indie. Un jeu qui suit des valeurs indépendantes, mais qui est fait avec la qualité pour laquelle les jeux AAA haut de gamme sont connus. Des titres comme ... Lire la suite , alors assurez-vous de les consulter pour vous inspirer de ce qui peut être réalisé avec des outils tels que Unity.
Ces équipes de développement de jeux indépendants ont fait preuve d'une agilité et d'une tolérance au risque qui, dans de nombreux cas, leur permettent de pousser l'innovation de gameplay plus rapidement que leurs homologues à gros budget. Un certain nombre de titres indépendants à succès choquant ont été créés ces dernières années, notamment Minecraft, Limbo, et Super Meat Boy, et même si vous n'avez pas les compétences nécessaires pour créer des jeux comme celui-ci, vous pouvez faire un jeu en utilisant Buildbox Comment créer un jeu vidéo en une semaine avec BuildboxIl existe un programme qui rend le développement de jeux incroyablement facile, même pour ceux qui n'ont absolument aucune expérience dans la conception de jeux vidéo. Cela s'appelle Buildbox. Voici pourquoi vous devriez l'essayer. Lire la suite .
Dans le paysage en évolution rapide du développement de jeux indépendants, Unité a émergé comme une norme de facto: son faible coût, sa facilité d'utilisation et son large éventail de fonctionnalités le rendent idéal pour le développement rapide de jeux. L'unité est si flexible que vous pouvez même créez vos propres contrôleurs de jeu personnalisés Comment créer un contrôleur de jeu personnalisé avec Arduino et UnityAvez-vous déjà voulu concevoir votre propre manette de jeu? C'est plus facile que vous ne le pensez! Lire la suite avec un peu de savoir faire DIY!
Même les grands studios tels que CCP (Developers of Eve en ligne) l'utiliser pour prototyper rapidement des concepts de jeu. Unity fournit un «moteur de jeu dans une boîte» - un moteur de physique et de rendu avec des crochets pour plusieurs langages de script, adaptable à pratiquement n'importe quel genre de jeu vidéo.
Alors que Unity fournit un éditeur visuel pour manipuler l'environnement de jeu, Unity n'est pas un outil de création de jeu à «programmation zéro». Il vous oblige à programmer pour produire des résultats, mais vous donne également un outil beaucoup plus flexible et puissant que n'importe quel programme de «créateur de jeu».
Unity ne fera pas le travail pour vous, mais il réduit considérablement la barrière à l'entrée. En partant de zéro avec C ++ et OpenGL, cela peut prendre des jours pour arriver au point où quelque chose est réellement affiché à l'écran. Avec Unity, cela prend environ dix secondes. Unity met les éléments de base de la création de jeux entre les mains de programmeurs novices de manière rapide et intuitive.
Aujourd'hui, je vais vous guider à travers tout ce que vous devez savoir pour créer un jeu dans Unity, qui se décompose en dix chapitres principaux:
§1 – Versions de l'unité
§2 – Installer Unity
§3 – Une brève introduction au paradigme orienté objet
§4 - Notions de base sur l'unité
§5 – Exemple: éléments de base d'un jeu
§6 – Scripting dans l'unité
§7 – Exemple: Scripting Pong
§8 – Explorer la documentation / En savoir plus
§9 – Construire votre jeu / Compiler vers une application autonome
§10-Notes de clôture
1. Versions de Unity
Unity se décline en deux versions de base: la version pro et la version gratuite. Il y a un nombre de différences, mais, d'une manière générale, la version pro prend en charge un certain nombre d'améliorations visuelles (comme les ombres douces en temps réel et post-traitement), et un grand nombre de fonctionnalités relativement mineures qui sont extrêmement utiles pour les plus complexes Jeux.
Cela dit, pour la plupart des jeux relativement simples que vous voudrez peut-être créer, la version gratuite d'Unity est parfaitement adéquate. Nous détaillerons ci-dessous les principales différences ci-dessous pour les personnes intéressées.
1.1 Prix
La version gratuite d'Unity est, bien sûr, gratuite. Cependant, il existe quelques limitations: la version gratuite d'Unity ne peut pas être concédée sous licence à une entreprise avec un revenu annuel supérieur à $100,000. Bien que de telles organisations dépassent le cadre de ce guide, si vous pensez que vous pourriez devenir une telle organisation, il est probablement judicieux de choisir la version Pro.
La version Pro de Unity est $75 un mois, ou $1500 pour une licence permanente, et n'a aucune limite sur ce que vous pouvez faire avec les jeux créés avec. Un essai gratuit de 30 jours est également disponible, que nous utiliserons pour ce guide, afin de vous donner un aperçu aussi complet que possible des fonctionnalités disponibles. Une licence d'étudiant d'un an est également disponible via Studica pour $129.
1.2 Caractéristiques
Il existe de nombreuses fonctionnalités absentes de la version gratuite d'Unity. Cependant, les différences les plus importantes sont les suivantes: la version gratuite de Unity manque d'un certain nombre d'options de rendu qui permettent des jeux plus beaux et plus rapides à exécuter (prise en charge LOD, post-traitement de l'espace d'écran, shaders avancés, ombres douces en temps réel et différés le rendu). Il manque également le plein système d'animation Mechanimet certains outils d'IA.
En général, pour les projets complexes à grande échelle ou pour lesquels les performances graphiques sont importantes, la version pro en vaut la peine. J'utilise la version pro, car je développe des jeux de réalité virtuelle pour le Oculus Rift Oculus Rift ReviewLa réalité virtuelle n'est pas nouvelle, mais elle est finalement abordable et à notre portée. Après quatre ans et deux prototypes de développement, la dernière édition grand public de l'Oculus Rift est arrivée. Lire la suite et la prise en charge du post-traitement de l'espace écran est nécessaire pour interagir correctement avec le casque.
2. Installer Unity
Unity est simple à installer. Vous pouvez télécharger l'exécutable depuis Unity3d.com/get-unity/download.
Une fois téléchargé, exécutez-le, puis suivez les instructions du programme d'installation. Une fois l'installation terminée, une fenêtre intitulée «Activez votre licence Unity» apparaît. Cochez la case «Activer un essai gratuit de 30 jours de Unity Pro» puis «OK».
Toutes nos félicitations! Vous disposez maintenant d'un essai de 30 jours d'Unity Pro. À l'expiration de la période d'essai, si vous ne souhaitez pas acheter la version pro, vous pouvez passer à la version gratuite et conserver votre contenu existant.
3. Une brève introduction au paradigme orienté objet
Avant de commencer avec Unity, il est important de revenir un peu sur les bases. Unity prend en charge les deux C # et Javascript pour programmation de jeux 7 langages de développement de jeux Unity à apprendre: lequel est le meilleur?Vous voulez commencer le développement de jeux dans Unity? Vous devrez vous familiariser avec l'une de ces langues compatibles avec Unity. Lire la suite ; nous allons travailler avec C # pour ce didacticiel.
Tout d'abord, si vous n'avez jamais programmé auparavant, mettez ce tutoriel de côté et passez quelques jours à travailler avec Microsoft Introduction au langage C # jusqu'à ce que vous vous sentiez à l'aise d'utiliser la langue pour des tâches simples.
Si vous souhaitez quelque chose d'un peu différent de C # (mais pas nécessairement un langage que vous pouvez utiliser dans Unity), jetez un œil à notre guide de la six langages de programmation les plus simples pour les débutants 6 langages de programmation les plus faciles à apprendre pour les débutantsApprendre à programmer, c'est tout autant trouver le bon langage que le processus d'édification. Voici les six premiers langages de programmation les plus simples pour les débutants. Lire la suite .
Si vous avez déjà programmé dans un langage impératif ou orienté objet comme C ou Java, parcourez l'amorce et familiarisez-vous avec la façon dont C # diffère des autres langages que vous avez utilisés dans le passé. Quoi qu'il en soit, ne poursuivez pas le didacticiel avant de vous sentir à l'aise pour résoudre des problèmes simples avec C # (par exemple, si je vous demandais vous pour écrire un programme qui imprime les cent premiers nombres premiers, vous devriez pouvoir écrire ce programme sans consulter Google).
Le concept le plus important à comprendre ici est le paradigme orienté objet D'où la programmation «orientée objet» tire-t-elle son nom?Orienté objet n'est pas seulement un mot à la mode aléatoire que vous entendez dans les cercles de programmation. Il y a une raison derrière le nom - mais quoi? Rejoignez-moi alors que j'explore certains des principes fondamentaux des concepts de programmation et explique ... Lire la suite (abrégé par OOP). Dans les langages orientés objet, les programmes sont divisés en unités fonctionnelles appelées Objets. Chaque objet a ses propres variables et fonctions privées. Les fonctions spécifiques aux objets sont appelées les méthodes.
L'idée ici est la modularité: en isolant chaque objet et en forçant d'autres objets à interagir avec lui grâce à ses méthodes, vous pouvez réduire le nombre d'interactions involontaires possibles - et, par extension, Bugs. Vous pouvez également créer des objets que vous pourrez réutiliser ultérieurement sans modification. Dans Unity, vous allez construire ces objets et les attacher à entités de jeu (dont ils gouverneront le comportement).
Les objets sont instanciés à partir de Des classes: une classe n'est qu'un fichier qui définit la définition de votre objet. Donc, si vous voulez un Mook objet qui gère l'IA d'un ennemi dans votre jeu, vous devez écrire une classe "Mook", puis attacher ce fichier à chaque entité ennemie. Lorsque vous exécutez votre jeu, chaque ennemi sera équipé d'une copie de l'objet ‘Mook’.
Attacher un nouveau script à un objet ressemble à ceci:
Premier, sélectionner l'objet et allez au Inspecteur. Clique sur le Ajouter un composant bouton.
Aller à nouveau script, entrez le nom de votre choix et cliquez sur créer et ajouter.
Vous avez maintenant un nouveau script que vous pouvez éditer en double-cliquant dessus!
Un fichier de classe ressemble à ceci:
en utilisant UnityEngine; classe publique Mook: MonoBehaviour {santé flottante privée; void Start () {health = 100; } void Update () {if (health> 0) {/ * Recherchez un joueur si vous rencontrez le joueur sur la route, tuez-le si vous vous faites tirer dessus, supprimez une quantité aléatoire de santé * /}} }
Décomposons ceci:
- Utilisation d'UnityEngine: Cette ligne indique à C # que nous voulons utiliser les bibliothèques Unity, qui nous permettent de nous connecter au moteur de jeu Unity.
- Classe publique Mook: MonoBehaviour:Cette ligne déclare la classe et son nom - Mook.
- Santé du flotteur privé: Cela déclare une variable de classe privée (qui ne peut être modifiée qu'à partir de l'intérieur de la classe). La variable reçoit une valeur dans Début.
- Début nul (): Cela déclare une méthode appelée Début. Le démarrage est une méthode spéciale qui ne s'exécute qu'une seule fois, lors du lancement initial du jeu.
- Mise à jour nulle (): La mise à jour est une autre méthode spéciale, qui s'exécute sur chaque image. La plupart de votre logique de jeu ira ici.
- // si vous rencontrez le joueur sur la route, tuez-le: Cette ligne est un commentaire (toute ligne commençant par une double barre oblique est ignorée par C #). Les commentaires sont utilisés pour vous rappeler ce que font des bits de code particuliers. Dans ce cas, ce commentaire est utilisé pour remplacer un bloc de code plus compliqué qui fait réellement ce que le commentaire décrit.
De même que Début et Mettre à jour, vous pouvez instancier vos propres méthodes avec presque tous les noms. Cependant, les méthodes que vous créez ne s'exécutent que si elles sont appelées. Déclarons une méthode pour une classe hypothétique appelée addTwoNumbers qui ajoute deux nombres ensemble:
float public addTwoNumbers (float a, float b) {return a + b; }
Cela déclare une méthode publique (accessible à d'autres objets) qui renvoie un flottant, appelé addTwoNumbers, qui prend en entrée deux flottants (appelés une et b). Il renvoie ensuite la somme des deux valeurs en tant que sortie.
Appel de cette méthode à partir de la même classe (par exemple, de l'intérieur Mettre à jour) ressemble à ça:
résultat flottant = addTwoNumbers (1, 2);
L'appel de la méthode à partir d'une autre classe est similaire:
instance addTwoNumbers; float result = instance.addTwoNumbers (1, 2);
Encore une fois, cela crée simplement une instance de notre classe, accède à la méthode appropriée et lui donne les nombres que nous voulons ajouter, puis stocke le résultat dans résultat. Facile.
Si votre script est attaché à un objet qui a des propriétés spéciales (comme un émetteur de particules) qui ne sont pas accessibles sous l'ensemble normal de paramètres GameObject, vous pouvez choisir de le traiter comme un type d'entité de jeu différent en utilisant la GetComponent méthode.
La syntaxe pour cela ressemble à ceci:
GetComponent().Jouer();
Si tout cela ne vous est pas familier, revenez en arrière et passez par l'amorce C #. Cela vous évitera beaucoup de frustration au fur et à mesure.
4. Notions de base sur l'unité
Dans cette section, nous allons nous familiariser avec les mécanismes de base du moteur Unity. Le flux de travail dans Unity ressemble à ceci:
- Créer une entité pour jouer un rôle dans le jeu (vide GameObjects peut être utilisé pour des tâches logiques abstraites).
- Écrivez ou recherchez un fichier de classe et ajoutez-le à l'entité en tant que script (à l'aide du Ajouter un composant bouton dans le inspecteur vue.
- Courir > tester > déboguer > répéter jusqu'à ce que cela fonctionne et passez à l'élément suivant du jeu.
Unity est livré avec un certain nombre d'onglets de vue de base qui peuvent être disposés de différentes manières au goût de l'utilisateur. Les cinq grands sont:
- Jeu: affiche une instance en cours du jeu avec laquelle vous pouvez interagir et tester.
- Scène: fournit une version statique et modifiable du Univers du jeu.
- Inspecteur: vous permet de modifier des entités individuelles dans le monde du jeu en les sélectionnant dans le éditeur languette.
- Projet: vous permet de parcourir les fichiers du projet et de faire glisser des modèles, des matériaux et d'autres ressources dans le éditeur onglet pour les placer dans le monde du jeu.
- Hiérarchie: cet onglet affiche tous les objets du monde, vous permettant de trouver des objets distants dans la scène et des entités parents les uns par rapport aux autres en cliquant et en faisant glisser.
Voir le diagramme ci-dessous pour les emplacements de toutes ces choses:
4.1 Entités unitaires
4.1.1 Maillages
Les mailles sont le moyen Géométrie 3D est représenté dans Unity. Vous pouvez soit utiliser le module intégré de Unity primitif objets (cubes, sphères, cylindres, etc.), ou importez vos propres modèles 3D à partir d'un package de modélisation comme Mixeur Premiers pas avec Blender: 7 tutoriels fantastiques pour les débutantsLa modélisation 3D est un excellent moyen d'exercer sa créativité tout en restant en contact avec son côté technique. Voici quelques super tutoriels gratuits. Lire la suite ou Maya Apprendre Maya 2016: par où commencerMaya est un outil utilisé pour l'animation 3D, mais il est livré avec une courbe d'apprentissage incroyablement raide. Quel bon matériel pédagogique existe-t-il? Lire la suite . Unity prend en charge une variété de formats 3D, notamment .fbx, et .3ds.
Les outils de base pour manipuler les maillages sont les boutons de mise à l'échelle, de rotation et de traduction dans le coin supérieur gauche de l'interface. Ces boutons ajoutent des icônes de contrôle aux modèles dans la vue de l'éditeur, qui peuvent ensuite être utilisées pour les manipuler dans l'espace. Pour modifier la texture ou les propriétés physiques d'un objet, sélectionnez-les et utilisez le inspecteur vue d’analyser la Matériel et corps rigide éléments.
4.1.2 Éléments de l'interface graphique
Les sprites et le texte de l'interface graphique traditionnelle peuvent être affichés à l'aide du Texte GUI et le Texture GUI GameObjects dans l'éditeur. Cependant, une manière plus robuste et réaliste de gérer les éléments de l'interface utilisateur consiste à utiliser le Texte 3D et Quad GameObjects (avec des textures transparentes et un shader transparent non éclairé) pour placer les éléments HUD dans le monde du jeu en tant qu'entités.
dans le hiérarchie vue, ces éléments de gameplay peuvent être glissés sur la caméra principale pour en faire des enfants, en s'assurant qu'ils se déplacent et tournent avec la caméra.
La taille et l'échelle des éléments GUI (texte et textures) peuvent être ajustées à l'aide des champs appropriés de l'onglet Inspecteur.
4.1.3 Matériaux
Les matériaux sont des combinaisons de textures et shaders Explication de cinq termes importants relatifs aux jeux sur PCSi vous jouez à un jeu sur une console, les détails techniques sont traités pour vous. Certains joueurs préfèrent cela, mais les joueurs sur PC apprécient souvent le plus grand degré de contrôle qu'ils ont sur l'œil d'un jeu ... Lire la suite et peut être glissé directement sur les objets du jeu depuis l'onglet projet. Un grand nombre de shaders sont fournis avec Unity Pro, et vous pouvez ajuster la texture qui leur est attachée à l'aide de l'onglet Inspecteur d'un objet auquel ils sont appliqués.
Pour importer une texture, convertissez-la en .jpg, .png, ou .bmpet faites-le glisser dans le les atouts sous le répertoire du projet Unity (qui apparaît dans Mes documents par défaut). Après quelques secondes, une barre de chargement apparaîtra dans l'éditeur. Une fois terminé, vous pourrez trouver l'image sous forme de texture sous le projet languette.
4.1.5 Lumières
Les lumières sont GameObjects qui projettent l'éclat sur le monde. S'il n'y a pas de lumière dans votre scène, tous les polygones sont dessinés au même niveau de luminosité, donnant au monde un aspect plat et délavé.
Les lumières peuvent être positionnées, tournées et ont plusieurs caractéristiques internes que vous pouvez personnaliser. le intensité le curseur contrôle la luminosité de la lumière et intervalle contrôle sa vitesse de disparition.
Les lignes directrices du vue de la scène vous montrer la portée maximale de l'éclairage. Jouez avec les deux réglages pour obtenir l'effet souhaité. Vous pouvez également régler la couleur de la lumière, le motif (biscuit affiché sur la surface vers laquelle la lumière est pointée, et quel type de fusée apparaît à l'écran lorsque vous regardez directement la lumière. Le cookie peut être utilisé pour simuler des motifs lumineux plus réalistes, créer de fausses ombres spectaculaires et simuler des projecteurs.
Les trois principaux types de lumière sont place, point, et directionnel.
Projecteurs avoir un emplacement dans l'espace 3D et projeter la lumière dans une seule direction dans un cône d'angle variable. Ils sont bons pour les lampes de poche, les projecteurs et, en général, vous donnent un contrôle plus précis de l'éclairage. Les spots peuvent projeter des ombres.
Lumières ponctuelles avoir un emplacement dans l'espace 3D et projeter la lumière uniformément dans toutes les directions. Les éclairages ponctuels ne projettent pas d'ombres.
Feux directionnels, enfin, sont utilisés pour simuler la lumière du soleil: ils projettent la lumière dans une direction comme si infiniment loin. Les lumières directionnelles affectent chaque objet de la scène et peuvent produire des ombres.
4.1.6 Systèmes de particules
UNE Système de particules est un GameObject qui génère et contrôle des centaines ou des milliers de particules simultanément. Les particules sont de petits objets 2D optimisés affichés dans l'espace 3D. Les systèmes de particules utilisent un rendu et une physique simplifiés, mais peuvent afficher des milliers d'entités en temps réel sans bégaiement, ce qui les rend idéales pour la fumée, le feu, la pluie, les étincelles, les effets magiques, etc.
Il existe de nombreux paramètres que vous pouvez modifier pour obtenir ces effets, et vous pouvez y accéder en créant un système de particules sous le éditeur de composants > sélection du système de particules > ouverture de l'onglet inspecteur. Vous pouvez modifier la taille, la vitesse, la direction, la rotation, la couleur et la texture de chaque particule, et définir la plupart de ces paramètres pour qu'ils changent également avec le temps.
Sous le collision, si vous l'activez et définissez l'espace de simulation sur monde vous obtiendrez des particules qui entreront en collision avec des objets dans le monde, qui peuvent être utilisées pour un certain nombre d'effets de particules réalistes, y compris la pluie, l'eau en mouvement et les étincelles.
5. Exemple: éléments de base d'un jeu
Pour ce tutoriel, nous allons faire un simple jeu de Pong - quelque chose que nous avons couvert plusieurs fois en bricolage avant:
- Arduino Classic Pong Comment recréer le jeu de Pong classique en utilisant ArduinoPong a été le tout premier jeu vidéo à atteindre le marché de masse. Pour la première fois dans l'histoire, le concept de "jeu vidéo" a été introduit dans la maison familiale, grâce à l'Atari 2600 -... Lire la suite
- Arduino OLED Pong Arduino Retro Gaming avec écran OLEDVous êtes-vous déjà demandé combien de travail il fallait pour écrire vos propres jeux rétro? Est-il facile de coder Pong pour l'Arduino? Lire la suite
Dans cette section, nous allons passer en revue l'organisation des éléments de base - le didacticiel de script viendra plus tard.
Tout d'abord, décomposons le jeu de Pong en ses composants de base. Tout d'abord, nous avons besoin de deux pagaies et d'une balle. La balle vole hors écran, nous voulons donc un mécanisme pour la réinitialiser. Nous voulons également que le texte affiche le score actuel et, pour vous montrer tous les éléments de base de Unity, nous voulons un effet de particules fantaisie lorsque vous frappez la balle. L'ensemble du jeu devra être considérablement éclairé.
Cela se décompose en un objet boule (une sphère), un géniteur, deux accessoires de pagaie avec émetteurs de particules attaché, un Entité de texte 3D, et un projecteur. Pour ce didacticiel, nous utiliserons le matériau physique par défaut rebondir, avec rebondir combiner mis à multiplier. Voici à quoi ressemble la configuration, en dix captures d'écran:
Créez d'abord un accessoire de cube pour la pagaie.
Faites-le évoluer de manière appropriée, le dupliquer, et mettez un sphère entre les palettes pour le ballon.
Ensuite, créez un Objet 3DText et échelle et position correctement, en changeant le taille de police attribut pour obtenir une image moins pixélisée.
Ensuite, créez deux systèmes de particules, choisissez les caractéristiques souhaitées et fixez-les aux palettes.
Ensuite, vous voudrez positionner et tourner la caméra afin de cadrer correctement la scène. Pendant que la caméra est sélectionnée, vous pouvez voir un petit aperçu de la vue de la caméra dans le coin inférieur droit.
Avant de terminer, nous devons créer deux cubes supplémentaires pour être des pare-chocs, pour empêcher la balle de rebondir hors de la zone de jeu. Nous pouvons les rendre invisibles en décochant rendu de maillage dans le onglet inspecteur.
Si vous frappez le jeu, vous pouvez maintenant voir les éléments de base de notre jeu présentés. Ils ne feront rien encore, mais nous y arriverons!
Maintenant que nous avons cette configuration, nous allons parler de ce qui est impliqué dans l'écriture de ces éléments pour créer un jeu.
6. Scripting dans Unity
Une fois qu'un script est attaché à un objet, vous pouvez le réviser en double-cliquant dessus dans le inspecteur. Cela ouvre MonoDevelop, l'environnement de développement par défaut pour Unity. Essentiellement, Monodevelop est un éditeur de texte avec des fonctionnalités spécifiquement optimisées pour la programmation.
Les mots clés et les commentaires sont mis en évidence dans bleu et vertet les valeurs numériques et les chaînes apparaissent dans rouge. Si vous avez utilisé Éclipse ou d'autres IDE, MonoDevelop est très similaire. Vous pouvez construire vos scripts depuis l'intérieur de l'éditeur, pour vérifier les erreurs de syntaxe, comme ceci:
En général, pour que votre script interagisse avec Unity, vous devez référencer les éléments que possède l’objet contenant le script (vous pouvez voir une liste de ces éléments sous le inspecteur onglet lorsque l'objet correspondant est sélectionné). Vous pouvez ensuite appeler des méthodes ou définir des variables pour chacun de ces éléments pour appliquer les modifications souhaitées.
Si vous voulez qu'un script sur un objet affecte les propriétés d'un autre objet, vous pouvez créer un vide GameObject dans votre script et utilisez la variable inspecteur pour l'affecter à un autre objet de la scène.
Une liste des éléments qu'un objet peut avoir est la suivante (tirée de la vue de l'inspecteur de l'une de nos pagaies dans l'exemple ci-dessus):
- Transformer
- Cube (filtre maillé)
- Collisionneur de boîte
- Rendu de maillage
Chacun de ces aspects de l'objet peut être influencé à partir d'un script. Ensuite, nous verrons exactement comment.
6.1 Transformer
Les fonctions de transformation d'un GameObject dans Unity contrôlent les paramètres physiques de cet objet: son échelle, son position, et son orientation. Vous pouvez y accéder à partir d'un script comme celui-ci:
transform.position = newPositionVector3; transform.rotation = newRotationQuaternion; transform.localScale = newScaleVector3;
Dans les exemples ci-dessus, les variables nommées sont des types spécifiés dans les noms. Il y a quelques détails clés ici: la position et l'échelle sont, comme vous vous en doutez, stockées Vector3s. Vous pouvez accéder au X, Oui, et Z composants de chacun (par exemple, transform.position.y vous donne la distance d'un objet au-dessus du plan zéro).
Cependant, pour éviter serrure de cardan, les rotations sont gérées comme Quaternions (vecteurs à quatre composants). Étant donné que les quaternions manipulés à la main ne sont pas intuitifs, vous pouvez manipuler les rotations à l'aide des angles eulériens à l'aide du Quaternion. Euler méthode comme ça:
transform.rotation = Quaternion. Euler (tangage, lacet, roulis);
Si vous souhaitez déplacer des objets en douceur d'un endroit à un autre, vous trouverez le Slerp méthode pour quaternions et vector3s utile. Slerp prend trois arguments - l'état actuel, l'état final et la vitesse de changement, et interpole en douceur entre eux à la vitesse donnée. La syntaxe ressemble à ceci:
transform.position = Vector3.Slerp (startPositionVector3, newDestinationVector3, 1);
6.2 Rendu
Les fonctions de rendu dans Unity vous permettent de contrôler la façon dont les surfaces des accessoires sont rendues à l'écran. Vous pouvez réaffecter la texture, changer la couleur et modifier le shader et la visibilité de l'objet. La syntaxe ressemble à ceci:
renderer.enabled = false; renderer.material.color = nouvelle couleur (0, 255, 0); renderer.material.mainTexture = maTexture; renderer.material.shader = newShader;
La plupart d'entre eux ont des fonctions assez claires. Le premier exemple rend l'objet en question invisible: une astuce utile dans plusieurs situations. Le deuxième exemple attribue un nouveau Couleur RVB (à savoir, vert) à l'objet en question. Le troisième attribue la texture diffuse principale à une nouvelle variable Texture. Le dernier exemple change le shader du matériau de l'objet en une variable de shader nouvellement définie.
6.3 Physique
Unity est livré avec un moteur physique intégré - quelque chose qui jeux de sandbox physique Smash, Drive & Build: 3 impressionnants simulateurs de sandbox physique Lire la suite tous utilisent. Cela vous permet d'attribuer les propriétés physiques des objets et de gérer les détails de leur simulation pour vous. En général, plutôt que d'essayer d'implémenter votre propre physique à l'aide d'un manuel et du système de transformation, il est plus simple et plus robuste d'utiliser le moteur physique d'Unity dans toute la mesure du possible.
Tous les accessoires de physique nécessitent collisionneurs. Cependant, la simulation proprement dite est gérée par un corps rigide, qui peut être ajouté dans le inspecteur vue. Les corps rigides peuvent être cinématique ou non cinématique.
Les accessoires de physique cinématique entrent en collision (et affectent) les accessoires de physique non cinématique autour d'eux, mais ne sont pas affectés par la collision eux-mêmes. Les accessoires cinématiques statiques sont les objets immobiliers proverbiaux, et les objets cinématiques mobiles sont les proverbiale force imparable (pour mémoire, quand ils entrent en collision, ils passent simplement à travers chaque autre).
Au-delà de cela, vous pouvez ajuster la traînée angulaire de l'objet (la quantité d'énergie nécessaire pour le faire tourner), changer sa masse, dicter s'il est ou non affecté par la gravité et lui appliquer des forces.
Exemples:
rigidbody.angularDrag = 0.1f; rigidbody.mass = 100; rigidbody.isKinematic = false; rigidbody.useGravity = true; corps rigide. AddForce (transform.forward * 100);
Ce sont tous assez explicites. La seule chose à noter ici est l'utilisation de transform.forward. Les Vector3 ont tous trois composants (.vers l'avant, .up, et .droite) qui leur sont associés, auxquels il est possible d'accéder et qui tourne avec eux (vers l'avant est la direction de la flèche bleue dans l'éditeur). le transform.forward Le mot-clé est simplement le vecteur direct de l'objet courant de magnitude 1. Il peut être multiplié par un flotteur pour créer plus de force sur l'objet. Vous pouvez également référencer transform.up et transform.right, et les nier pour obtenir leurs revers.
6.4 Collision
Souvent, lors de la construction d'un jeu, vous aimeriez qu'une collision entraîne un changement d'état dans votre code, au-delà de la simulation physique. Pour cela, vous aurez besoin d'un méthode de détection de collision.
Un certain travail de préparation est nécessaire pour détecter les collisions dans Unity. Tout d'abord, au moins l'un des objets de la collision a besoin d'un corps rigide non cinématique attaché à elle. Les deux objets doivent avoir des collisionneurs corrects, définis comme non déclencheurs. La vitesse totale des deux objets doit être suffisamment faible pour qu'ils entrent en collision, au lieu de simplement se sauter l'un dans l'autre.
Si vous avez tout pris en charge, vous pouvez vérifier la collision en plaçant une méthode de détection de collision spéciale dans un script attaché à l'objet avec lequel vous souhaitez vérifier la collision. La méthode ressemblera à ceci:
void OnCollisionEnter (Collision other) {// faites les choses ici. }
Cette méthode s'exécutera automatiquement pendant la première image où un autre objet touche votre objet. L'entité de collision autre est une référence à l'objet que vous frappez. Vous pouvez, par exemple, référencer son gameobject, corps rigide, et transformer caractéristiques pour le manipuler de diverses manières. Tandis que OnCollisionEnter est probablement la fonction la plus courante que vous utiliserez, vous pouvez également utiliser OnCollisionExit et OnCollisionStay (avec une syntaxe et une utilisation par ailleurs identiques), qui s'activent pendant la première image que vous arrêtez d'entrer en collision avec un objet et pendant chaque image que vous entrez en collision avec un objet, respectivement.
Parfois, il peut aussi être utile de faire ce qu'on appelle raycasting. En raycasting, une ligne infiniment mince (un rayon) est projeté à travers le monde à partir d'une certaine origine, le long d'un vecteur, et, lorsqu'il frappe quelque chose, la position et d'autres détails de la première collision sont retournés. Le code d'un raycast ressemble à ceci:
RaycastHit a frappé; si (Physique. Raycast (transform.position, -Vector3.up, out hit)) {float distanceToGround = hit.distance; }
Cela projette un rayon à partir de la position de l'objet courant le long de -Vector3.up (directement vers le bas) et relie la variable frappé au premier objet avec lequel il entre en collision. Une fois que votre rayon a touché quelque chose, vous pouvez accéder hit.distance pour déterminer sa distance, ou frappé. GameObject pour manipuler l'objet que vous frappez.
Des diffusions comme celle-ci peuvent être utilisées pour les tireurs afin de déterminer ce vers quoi pointe l'arme, ou pour sélectionner des objets lorsque la caméra les regarde, ou pour certains styles de mouvement mécanique.
6.5 Correction du temps
Un facteur important à garder à l'esprit lorsque vous manipulez des objets de cette manière est lié à framerate. Quelle que soit la précision avec laquelle vous optimisez, les fréquences d'images varieront toujours et vous ne voulez pas que la vitesse de votre jeu varie en conséquence. Si quelqu'un d'autre exécute votre jeu sur un ordinateur plus rapide que celui sur lequel vous l'avez développé, vous ne voulez pas que le jeu s'exécute à une vitesse double.
Pour corriger cela, vous multipliez les valeurs que vous utilisez par le temps nécessaire au rendu de la dernière image. Cela se fait en utilisant Time.deltaTime. Cela modifie efficacement la vitesse de toute variable à partir de laquelle vous incrémentez chaque image changement par image à changement par seconde, et vous devriez probablement apporter cette modification à toute valeur que vous incrémentez ou décrémentez à chaque image.
6.6 Sources audio et écouteurs
Maintenant que nous avons expliqué comment créer, restituer et contrôler des objets, parlons de l'autre sens que les jeux informatiques peuvent servir: à savoir, du son. Unity prend en charge deux types de sons: 2D et 3D des sons. Les sons 3D varient leur volume en fonction de la distance et se déforment lorsqu'ils se déplacent par rapport à la caméra; Les sons 2D ne le font pas.
Les sons 2D conviennent aux voix off et à la musique de fond, et les sons 3D s'appliquent aux sons générés par des événements dans le monde. Pour changer si un son est 3D ou non, sélectionnez-le dans le projet vue, passez à la inspecteur afficher et sélectionner l'option appropriée dans le menu déroulant, puis appuyez sur la touche réimporter bouton.
Pour jouer réellement le son, vous devrez attacher un source audio à un accessoire (celui dont vous voulez que le son provienne, dans le cas d'un son 3D). Ensuite, vous devrez ouvrir le clip audio et sélectionnez votre fichier son.
Vous pouvez utiliser myAudioSource. Pause() et myAudioSource. Jouer() pour contrôler ces fichiers audio. Vous pouvez régler les comportements d'atténuation, le volume et le décalage Doppler des sons sous le inspecteur onglet pour la source audio.
6.7 Entrée
Un jeu qui ne prend aucune entrée de l'utilisateur n'est pas vraiment un jeu. Il existe de nombreux types d'entrées que vous pouvez lire, et presque tous sont accessibles via le Contribution et Code clé objets. Voici quelques exemples d'instructions d'entrée (dont les valeurs sont évaluées à chaque trame).
Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Input. GetMouseButton (0); bool isPressingSpace = Input. GetKey (KeyCode. Espace);
Les fonctions de ces lignes sont principalement explicites. En utilisant ces trois types de référence d'entrée, vous pouvez reconstruire les schémas de contrôle de la plupart des jeux informatiques 3D modernes.
6.8 Débogage d'un script
Supposons qu'un script ne fonctionne pas. Comme le dit le bon docteur, des accrochages et des raccrochages peuvent vous arriver. S'il y a des erreurs de syntaxe avec votre C #, le jeu refusera généralement de s'exécuter lorsque vous frappez le jeu, et certains messages d'erreur assez utiles sont fournis si vous construire les scripts depuis l'éditeur. Voir ci-dessous:
Ces bogues ne sont généralement pas les plus difficiles à corriger. Ce qui peut être plus problématique, ce sont les erreurs sémantiques subtiles, dans lesquelles vous avez réussi à écrire un fichier plein de C # valide - tout simplement pas celui qui fait ce que vous pensiez qu'il ferait. Si vous rencontrez l'une de ces erreurs et que vous ne parvenez pas à la localiser, vous pouvez essayer d'améliorer la situation en quelques étapes.
La première consiste à suspendre l'exécution du jeu et à vérifier la console. Vous pouvez suspendre le jeu en cliquant sur le pause dans la partie centrale supérieure de l'éditeur, puis en sélectionnant console du bas du fenêtre menu (ou en appuyant sur Ctrl > Décalage > C). Même s'il n'y a pas d'erreurs, les avertissements peuvent toujours aider à donner des indices sur ce qui pourrait mal se passer.
Si cela ne fonctionne pas, vous pouvez également essayer d'avoir une idée de l'état de votre script en imprimant l'état des variables internes pour valider que le programme fait ce que vous pensez qu'il fait. Vous pouvez utiliser Déboguer. Journal (chaîne) pour afficher le contenu d'une chaîne sur la console lorsque l'exécution du programme atteint cette ligne. En général, si vous travaillez en arrière à partir de ce que vous pensez devrait se passer à travers les choses qui devraient être pour y arriver, vous finirez par arriver à un point où vos impressions de débogage ne feront pas ce que vous attendez faire. C’est là que se trouve votre erreur.
7. Exemple: Scripting Pong
Pour construire Pong, décomposons le jeu en ses éléments de base: nous avons besoin d'une balle qui ricoche d'avant en arrière entre les palettes à l'augmentation vitesse, nous avons besoin d'un tableau de bord qui sait quand les balles ont passé les palettes, et nous avons besoin d'un mécanisme pour redémarrer la balle lorsque cela arrive. Une bonne première étape serait d'ajouter un corps rigide non cinématique à la balle, deux corps rigides cinématiques au pagaies, désactiver la gravité pour chacun d'eux et attribuer un matériau physique approprié à partir des actifs standard (rebondir avec rebondir combiner mis à multiplier).
Ci-dessous, vous pouvez voir le script de la balle avec des commentaires explicatifs. Le ballon doit atteindre certains objectifs de base: il doit rebondir dans un schéma compliqué, en maintenant toujours mouvement sur les deux axes, et il devrait accélérer à un rythme difficile mais pas impossible à l'horizontale direction.
BallHandler.cs
Ensuite, nous devons écrire notre palette, que vous pouvez voir ci-dessous. La palette doit se déplacer de haut en bas en réponse aux pressions sur les touches (mais pas en dehors de certaines limites). Il doit également déclencher le système de particules lorsqu'il entre en collision avec quelque chose.
PaddleHandler.cs
Ensuite, nous avons besoin de l'IA ennemie: quelque chose qui fera que la raquette de l'ennemi se dirigera vers le ballon à un taux fixe. Pour cela, nous utiliserons Vector3.Slerp pour une simplicité maximale. Nous aimerions également le même comportement de particules que nous voyons sur notre propre pagaie.
EnemyAI.cs
Enfin, nous avons besoin d'un script pour mettre à jour le tableau de bord et réinitialiser la balle lorsqu'elle sort des limites.
ScoreboardUpdater.cs
Avec ces scripts joints et les références remplies, lorsque nous exécutons notre jeu de Pong, nous faisons l'expérience du gameplay!
Vous pouvez téléchargez ma démo Pong, si vous souhaitez voir tout ce que j'ai décrit en action. Il fonctionne sur les systèmes Windows, Mac et Linux.
8. Explorer la documentation / en savoir plus
Unity est un moteur complexe avec beaucoup plus de fonctionnalités que ce qui pourrait être couvert dans un guide de ce style, et c'est avant d'inclure le large éventail d'extensions (gratuites et commerciales) Unity disponibles sur le l'Internet. Ce guide vous donnera un bon point de départ pour développer un jeu, mais l'auto-éducation est une compétence importante dans toute entreprise, et doublement ici.
Une ressource cruciale ici est la Script UnityReference. ScriptReference est une base de données consultable, disponible pour C # et Javascript, qui a une liste de chaque commande et fonctionnalité Unity, avec une description de leurs fonctions et de brefs exemples de syntaxe.
Si vous rencontrez des problèmes avec l'éditeur et l'interface d'Unity, ou tout simplement comme les didacticiels vidéo de préférence, il existe une longue liste de haute qualité Tutoriels vidéo Unity Les meilleurs didacticiels Unity 3D pour les débutantsVous souhaitez développer des jeux avec Unity, mais vous ne savez pas par où commencer? Essayez aujourd'hui l'un de ces super didacticiels Unity 3D. Lire la suite disponible. Plus étendu (mais moins large) tutoriels texte pour Unity sont également disponibles auprès de CatLikeCoding.
Enfin, si vous avez des questions dépassant le cadre de la documentation ou des didacticiels, vous pouvez poser des questions spécifiques à l'adresse réponses. Unity3d.com. N'oubliez pas que les réponses sont fournies par des bénévoles, alors respectez leur temps et recherchez d'abord dans la base de données pour vous assurer que votre question n'a pas déjà reçu de réponse.
9. Construire votre jeu / Compiler vers une application autonome
Lorsque vous avez construit quelque chose dont vous êtes fier (ou que vous avez fini de cloner notre exemple Pong légèrement douteux pour la pratique), il est temps de déplacez votre jeu depuis l'éditeur et transformez-le en quelque chose que vous pouvez publier sur Internet et obliger vos amis et votre famille à jouer. Pour ce faire, vous devez créer une application autonome. La bonne nouvelle est que dans Unity, c'est très, très facile. Il y a cependant quelques hoquets potentiels auxquels vous voudrez faire attention.
Pour commencer, sachez que vous ne pouvez créer qu'un projet sans erreur. À cette fin, assurez-vous que la console est ouverte lors de la génération: il existe certaines conditions d'erreur que le jeu ignorera dans l'éditeur, mais abandonnera toujours une tentative de génération. Cela ne décharge que les messages d'erreur sur la console, sans aucun résultat visible à l'écran, ce qui peut être frustrant si vous oubliez de vérifier. Une fois que votre jeu se compile sans erreur, vous pouvez sélectionner Paramètres de construction sous le Fichier menu ou appuyez sur Ctrl > Décalage
> B. Cela fera apparaître une boîte de dialogue simple qui vous permet de créer votre jeu pour plusieurs plates-formes.
Le processus à partir de là est explicite: sélectionnez vos options et appuyez sur construire; le jeu vous invitera à installer un répertoire et y placera à la fois l'exécutable et le répertoire de données. Ces deux fichiers peuvent être compressés et distribués (assurez-vous simplement de ne pas facturer un jeu intégré à la démo Unity, car cela viole les conditions d'utilisation).
10. Notes de clôture
Comme pour tout outil de développement de jeux, la clé du succès avec Unity est le développement itératif. Vous devez construire par incréments gérables - soyez ambitieux, bien sûr, mais soyez ambitieux en petits morceaux et organisez ces morceaux tels que, même si vous êtes en deçà de votre ambition ultime, vous vous retrouverez au moins avec un produit.
Obtenez les éléments les plus cruciaux en premier: ayez une idée en tête de votre produit minimum viable, la chose la plus simple et la plus simple que vous puissiez créer et vous sentir toujours comme si vous aviez réalisé quelque chose de valable. Accédez à ce projet viable minimum avant de passer à de plus grandes ambitions.
Ce tutoriel vous donne un bon point de départ, mais la meilleure façon d'apprendre Unity est de créer un jeu. Commencez à créer un jeu, comblez les lacunes de vos connaissances au fur et à mesure qu'elles se présentent, et le flux progressif de connaissances érodera rapidement les choses que vous ne savez pas.
Si vous avez lu tout cela et êtes un peu dépassé par le codage requis avec Unity, assurez-vous de vérifier comment apprendre le développement de jeux avec Unity Learn Unity Learn est le moyen le plus simple de maîtriser le développement de jeuxVous voulez commencer à développer vos propres jeux? Unity Learn est la meilleure et la plus simple façon d'apprendre et de maîtriser ce que vous devez savoir. Lire la suite et lisez également notre guide sur comment faire des jeux vidéo sans aucune programmation Comment faire des jeux vidéo sans aucune programmationVous voulez créer un jeu vidéo mais vous ne pouvez pas coder? Utilisez ensuite un kit de construction de jeux vidéo qui vous permet de créer des jeux sans aucun codage requis! Lire la suite .
Unity est un outil puissant, et avec un peu d'exploration, vous pouvez créer des projets impressionnants plus rapidement que vous ne le pensez. Faites-nous savoir ce que vous avez construit dans les commentaires ci-dessous - nous aimerions voir!
Écrivain et journaliste basé dans le sud-ouest, André est assuré de rester fonctionnel jusqu'à 50 degrés Celsius et est étanche jusqu'à une profondeur de douze pieds.