Dernière mise à jour le 6 mars 2025 par LMD
1. Modéliser avec Pro Builder
Pro Builder est un outil intégré à Unity pour la modélisation d’objets 3D. C’est un peu Blender en très simplifié. Il est cependant assez puissant pour des résultats élaborés.
Il n’est pas activé par défaut et il faut le charger dans Unity pour le rendre visible et actif.
Menu Window > Package Manager
Cela ouvre la Fenêtre Package Manager, ci-dessous.
Dans le Menu Packages en haut à gauche, choisir Unity Registry puis cliquer sur le bouton All.

Dans la liste à gauche, cliquez sur ProBuilder. Le détail s’affiche à droite.
Cliquez sur le bouton Install en haut à droite de la fenêtre.
ProBuilder se charge.
Une fois chargé, le bouton se transforme en Remove, si vous souhaitez le désactiver.

Un Menu Tools apparait en plus. Il donne accès à la palette des outils ProBuilder. Voir ci-dessous.
Par défaut, la palette ProBuilder s’affiche sous forme de liste. Cliquez sur les points de suspension en haut à droite et choisissez Use Icon Mode.
Nous ne traiterons pas ici de l’utilisation de ces outils. Cela ressemble beaucoup à Blender. Il y a quelques tutos sur le net à ce sujet.
2. Importer un fichier 3D
Il est très facile d’importer un fichier 3D réalisé dans un autre logiciel modeleur. Le fichier doit être de préférence au format .fbx (ou éventuellement .obj, quoique…).
C’est possible à partir de Blender, 3DS et bien d’autres logiciels de modélisation 3D. Une précaution à prendre : il vaut mieux éviter d’intégrer les caméras et lumières dans le fichier à importer.
Il est également possible d’importer directement les formats natifs :
– Blender .Blend,
– Sketchup .skp
– 3DSMax .3ds (Attention, dans 3DS Max les axes ne sont pas dans le même sens que dans Unity; il faudra orienter correctement les objets importés, par une Rotation).
• Importer directement un fichier .blend (Blender)
Dans Blender, préparez un fichier. Il est recommandé de préparer un fichier indépendant par objet à importer. Enregistrez-le.
Ici : maison22.blend
Dans Unity, créez dans les Assets un sous-dossier « Objets 3D » par exemple. Glissez-y directement le fichier blender. Un Asset nommé « maison22 » apparait alors. Il suffit de le faire glisser sur la Scene. Il contient tout ce que le fichier Blender contient (caméra, lumières, matériau, textures, etc.)
Attention, ce qui suit est obsolète; le lien dynamique n’est plus assuré automatiquement avec blender, sauf si on ouvre l’objet à partir d’Unity. Sélectionnez l’objet dans les Assets et dans l’Inspector cliquez sur le bouton Open.
Le lien avec l’original est dynamique, autrement dit, si vous modifiez le fichier dans Blender, il sera mis à jour dans Unity. Cela simplifie les choses, mais il est plutôt recommandé d’utiliser le format .fbx
• Créer et Importer un fichier .fbx
Ci-dessous, la fenêtre d’exportation en FBX dans Blender. Ne cochez pas la case Objets sélectionnés. Elle sert à exporter uniquement un objet sélectionné sur la Scene parmi d’autres. Là, nous allons exporter tout le fichier.
Par défaut, les Types d’objet sont tous cochés. Il est recommandé de ne conserver que les Mesh, comme ci-dessous.
Dans la zone Transformer, on peut régler l’échelle d’export et l’orientation des axes. Laissez comme indiqué.
Il est recommandé de cocher la case Apply Transform tout en bas.

Pour importer les textures, il faut également, dans le Menu Mode de Chemin, en haut à droite de la fenêtre d’export, choisir Copier à la place d’Auto et cocher le bouton à droite de la liste déroulante (voir ci-contre).
Il arrive avec d’anciennes versions d’Unity que l’objet placé sur la Scene s’affiche sans textures. Il faut le sélectionner et extraire ses Materials et Textures. Dans l’Inspector, onglet Materials, cliquez sur les boutons Extract Materials et Extract Textures.

Pour importer le fichier FBX obtenu dans Unity, Menu Assets > Import New Asset… Choisissez le fichier .fbx à importer. Il s’ajoute aux Assets.
Vous pouvez faire encore plus simple pour importer un objet dans Unity. Il suffit de faire glisser le fichier .fbx dans les Assets.
Il faut le ranger dans un sous-dossier adapté, nommé « Objects 3D » par exemple, puis le faire glisser sur la Scene ou dans la Hierarchy pour s’en servir comme n’importe quel GameObject 3D.
Avec les réglages par défaut, un objet .blend est importé avec la Camera et les Lumières de Blender.
C’est aussi le cas si vous utilisez un fichier .FBX sans les avoir supprimées au moment de l’export. Il faut le faire dans Unity.
Une fois importé, on peut encore modifier l’Objet dans Unity :
Il faut sélectionner cet Objet dans les Assets et dans l’Inspector, à l’onglet Model, il faut décocher les cases Import Camera et Import Lights, comme ci-contre.
Puis cliquez à nouveau sur l’Objet dans les Assets. Une fenêtre vous propose d’appliquer les modifications. Validez par Save (anciennement Apply).
Une fois les réglages d’import modifiés, les lumières importées ne s’appliquent plus. Elles n’ont pour autant pas disparues de l’objet importé.
Vous pouvez voir ci-dessous dans les Assets le résultat des différentes manières d’importer un objet.
Au dessus, l’import du fichier Blender (contient la caméra et la lumière, contradictoires avec celles d’Unity) comporte deux éléments Cube.
Dans la Hierarchy, l’objet importé « maison » contient bien 3 éléments, le Cube, la Camera et la Light (plus le Material rose).
En dessous, l’Objet « maison_rose » a été exporté en .FBX depuis Blender avec uniquement son Mesh. De fait, dans la Hierarchy, il s’affiche comme un objet unique qui ne contient pas d’Objet Enfant.

Il est à noter que les objets importés s’affichent dans la Hierarchy avec l’icône d’un cube à moitié bleu. C’est l’indication d’un Prefab, dont nous parlerons juste après.

Voir sur ce sujet : https://all3dp.com/2/blender-to-unity-how-to-import-blender-models-in-unity/
Finissez cette étape en ajoutant un Objet 3D Plane pour faire un sol.
3. Créer des Prefabs
Un Prefab (pour Préfabriqué) est un modèle d’objet, qui peut être composé de plusieurs objets, et doit être placé dans les Assets. Il peut être utilisé sur la Scene autant de fois que l’on veut. Chaque fois qu’on glisse un Prefab sur la Scene on dit que l’on créé une Instance de ce Prefab (Prefab Instanciate). C’est utile pour ne pas alourdir son projet dès que l’on veut réutiliser des objets ou même lorsqu’on ne l’utilise qu’une fois, pour contrôler des objets complexes. C’est également pratique pour exporter des objets tout prêts à être réutilisés dans un autre projet.
Il est à noter que les objets importés, depuis Blender par exemple, sont insérés dans les Assets en tant que Prefabs.
Pour créer un Prefab c’est très simple. Créez un Folder nommé « Prefabs » dans les Assets. Sélectionnez un ou plusieurs objets dans la Hierarchy et faites-le(s) glisser (ensembles) dans ce dossier.

Pour voir cela plus en détail, vous voyez ci-dessus un arbre sur la Scene. Comme vous pouvez le constater dans la Hierarchy en bas à gauche, il est constitué de deux objets indépendants, un Cylinder renommé « Tronc » et une Sphere renommée « Feuillage ».
Une première chose à faire est de regrouper ces deux objets en un seul. Commencez par créer un Objet vide : Clic droit sur la Hierarchy et Create > Empty Object. Renommez-le « Arbre » et vérifiez qu’il est bien à l’origine (Reset). Faites glisser dessus les deux objets précédents. Le résultat dans la copie d’écran en bas à droite. Les objets Tronc et Feuillage sont devenus enfants, Childs, de l’objet Arbre.


Il est alors possible de déplacer ou dupliquer cet Objet d’un seul coup, en le sélectionnant dans la Hierarchy. Quand l’Arbre est sélectionné, l’Inspector affiche des propriétés générales. Mais il reste bien sûr possible de modifier individuellement chaque composant (Child) de l’arbre. C’est un premier pas, mais si vous avez besoin de beaucoup d’arbres identiques, il va falloir les dupliquer et cela va vite devenir ingérable.

Pour créer un Prefab, commencez par créer un sous-dossier dans les Assets et renommez-le « Prefabs ». Puis, faites glisser l’objet Parent Arbre depuis la Hierarchy vers ce sous-dossier, comme ci-dessous.

Le résultat, c’est qu’un Prefab est créé dans les Assets et que l’objet original se transforme automatiquement en Instance de ce Prefab. Il change d’aspect dans la Hierarchy, prenant l’icône d’un cube bleu.
(Dans des versions plus anciennes d’Unity, cette transformation n’est pas automatique. Il faut effacer l’objet Parent de la Hierarchy et refaire glisser le Prefab depuis les Assets vers la Scene ou la Hierarchy.)

Vous pouvez faire glisser le Prefab sur la Scene autant de fois que vous voulez. Chaque composant reste modifiable individuellement en le sélectionnant et en modifiant ses propriétés. Ainsi, on peut créer plusieurs variantes du même modèle.

Cependant, vous pouvez éditer le modèle lui-même, c’est-à-dire le Prefab. Double-cliquez sur le Prefab dans les Assets. Il va s’ouvrir à la place de la Scene en mode Isolation, comme sur Illustrator. On voit le Fil d’Ariane en haut à gauche de la fenêtre et la case « Auto Save » qu’il faut garder cochée, en haut à droite.


Ici, j’ai choisi de modifier la couleur du Material du feuillage. Voir ci-dessous la couleur orange (blanche à l’origine) à droite de l’Albedo.
De fait, les feuillages prennent des couleurs d’automne.


Et vous constatez que cette modification s’applique automatiquement à toutes les Instances existantes, par héritage, ce qui ne serait pas le cas sur de simples duplications. C’est l’un des intérêts des Prefabs.


Allons plus loin. Vous pouvez créer une variante d’un Prefab. Dans le dossier Prefabs des Assets, faites un Clic Droit sur le Prefab Arbre et Create > Prefab Variant.
Vous le voyez ci-contre sous forme d’un cube bleu rayé. Nommez-le comme vous voulez.
Double-Cliquez dessus. Vous pouvez aussi le sélectionner et cliquer sur le bouton « Open Prefab » dans l’Inspector.
Modifiez-le comme vous voulez. Ici, j’ai fait un bosquet d’arbres avec la même texture. Puis placez-en une Instance sur la Scene.

L’avantage est que si vous modifiez le Prefab initial, ci-dessous en passant le feuillage en bleu, cela s’applique également automatiquement au Prefab Variant. Il est ensuite possible de faire des exceptions, mais pour cela, consultez le manuel si besoin.


Pour vous entrainer, vous pouvez créer un Prefab de cabane et un autre de table, à placer dans la cabane, pour poser un flacon importé sur la table. Cela peut faire par exemple dans un jeu, un objet à trouver.
4. Gérer les Components des Objets
Chaque Objet dans Unity est caractérisé par un certain nombre de Components, qui lui donnent ses propriétés et possibilités de réglage.
Tout objet contient un Transform Component, qui ne peut pas être supprimé. Il sert à déterminer la position, orientation et dimension des objets sur la Scene.
C’est le seul Component de base d’un Empty Object.


Pour ajouter un Component, sélectionnez un objet et dans l’Inspector, cliquez sur le bouton « Add Component« .
Il y a de nombreuses catégories de Components disponibles, ouvrant chacune un sous-menu, pour choisir le Component désiré.
Certains concernent les effets physiques (Physics), d’autres sont des Scripts, etc.
Nous allons par exemple voir comment rajouter un Script à un objet. Dans les Assets, créez un nouveau Folder et renommez-le « Scripts ».
À l’intérieur, Clic Droit et Create > Scripting >MonoBehaviour Script; Renommez-le selon ce qu’il doit faire. Ici renommez-le juste « NewScript » (pas d’espaces dans le nom).
Ci-dessous le code de base du nouveau Script s’affiche en bas de l’Inspector. Nous verrons plus tard comment afficher, modifier ou coder un script. Le langage des scripts dans Unity est le C# (il faut prononcer « C Sharp »).
Quand on le sélectionne, le code apparait dans l’Inspector, comme ci-dessous.

Pour appliquer ce Script à un objet, plusieurs possibilités, après avoir sélectionné l’objet en question :
– Ajouter un Component depuis l’Inspector de l’objet. Add Component > Script > New Script (ci-dessous à gauche). Il reconnait le nom des scripts existants.
– Depuis les Assets, faire glisser le Script vers la zone vide en bas de l’Inspector de l’objet dans la zone grise. Ci-dessous à droite, on voit le Component Script qui a été ajouté à l’objet avec son nom.
– Depuis les Assets, faire glisser le Script vers une instance de l’objet sur la Scène ou dans la Hierarchy.


Si vous faites un Clic droit sur le titre d’un Component dans l’Inspector, vous pouvez faire plusieurs opérations et notamment le supprimer (Remove Component), changer l’ordre des Components dans l’Inspector, comme des calques Photoshop (Move Up et Move Down), le dupliquer (Copy Component), etc.

5. Les Box Colliders
Les Colliders sont des Components associés à un GameObject qui créent une boîte autour de lui afin de le rendre capable de se heurter à son environnement. Un sol par exemple doit avoir un Collider (Mesh Collider pour un Plane ou Terrain Collider pour un Terrain), sans quoi les personnages qui se trouvent dessus vont passer à travers, ce qui n’est pas très opérationnel!
Il existe plusieurs sortes de Colliders, qui diffèrent par leur forme et par la nature des Objets auxquels ils sont associés :
– Box Collider pour un Cube
– Capsule Collider, pour une Capsule, un Cylinder ou un Character (un personnage, rien à voir avec du texte)
– Mesh Collider pour les Plane et les surfaces 3D importées
– Terrain Collider pour les Terrains
– Wheel Collider, pour les Roues de voiture !!! Pourquoi pas?
Un Collider permet aussi de détecter qu’un personnage touche un élément de décor ou un objet du jeu, se trouve à un endroit déterminé, passe une porte ou attrape un objet par exemple.

Ci-contre, l’Inspector d’un Plane servant de Sol montre un Mesh Collider. Ici, il est désactivé (la case à gauche du titre est décochée) de sorte que la collision avec cet objet n’est plus détectée. Un personnage (Character) va passer à travers lorsqu’on lance le jeu (Bouton Play en haut de l’interface d’Unity).
6. Le Component Rigid Body
Le RigidBody est un Component à ajouter à un GameObject pour lui attribuer un comportement physique. Cela lui confère notamment une masse et le rend sensible à la gravité. Ce Component se trouve dans la catégorie Physics. Il fait partie des Components essentiels, comme les Colliders, vus précédemment.

Ci-dessous, un Plane pour le sol avec son Mesh Collider par défaut et au dessus, suspendue, une Capsule à laquelle on a attribué un RigidBody avec les réglages par défaut.
Lorsqu’on clique sur le bouton Play, on voit la Capsule tomber par l’effet de la gravité (c’est ce que permet le RigidBody) et être bloquée par le sol (c’est ce que permet le Mesh Collider).



L’Inspector par défaut d’un RigidBody ci-contre.
La Mass vaut 1 Kg par défaut. Plus elle augmente, plus l’objet tombera vite et brusquement.
Pour qu’un objet tombe, il faut que la case Use Gravity soit cochée.
La valeur de Damping (ex Drag) ou Angular Damping est la résistance à l’air des objets déplacés par des forces, gravité ou autres.
Il est important de paramétrer un RigidBody pour tous les objets qui doivent être soumis à des forces, les personnages, des projectiles, etc.
Attention, si vous rajoutez un RigidBody à la maison, elle passera à travers le sol malgré le Collider du plane. Il faut également lui ajouter un Mesh Collider. Pourtant, avec les réglages par défaut, elle passera malgré tout à travers le sol. Pour éviter cela, il faut cocher la case Convex du Collider et vérifier que le Mesh du Collider n’est pas vide; ci-dessous, il contient un « Cube » qui est en réalité un maillage de la maison.
7. Ajouter un personnage (Asset FPS ou TPS)
7a_ Récupérer des Assets de personnages sur l’Asset Store
Allez sur l’Asset Store sur le web : https://assetstore.unity.com et connectez-vous à votre compte Unity.
Faites une recherche sur « Starter« , puis dans la colonne de droite, dans Pricing, cochez seulement les « Free Assets« .
Vous allez trouver les Starter Assets de personnage (Third Person et First Person). Ajoutez-les à vos assets « Add to My Assets« .
Dans Unity, ouvrez Menu Window > Package Manager. Choisissez en haut à gauche, Packages > My assets. Dans la liste de la colonne de gauche, sélectionnez le Starter Assets – First Person et cliquez sur le bouton Download en bas à droite, puis sur le bouton Import.
Vous pouvez vérifier quel est le Système d’Input qui est activé. Allez dans Menu Edit > Project Settings > Player > Configuration > Active Input Handling. Il doit être réglé sur Both (ou Input System Package New).
7b_ Placer un First Person sur la Scène
Un FirstPerson est un personnage que l’on ne voit pas apparaitre sur le jeu : c’est vous, le joueur. Il voit la Scène directement en se déplaçant.
Une fois les Starter Assets intégrés à votre Projet, ils apparaissent comme nouveau dossier dans le Dossier Assets.
Ouvrez le dossier Starter Assets > First PersonControler > Prefabs. Il contient 4 éléments. Il faut placer sur la Scène les deux derniers en les y faisant glisser, le PlayerCapsule et le PlayerFollowCamera.
Ils apparaissent alors également dans la Hierarchy, comme ci-dessous. Le PlayerCapsule contient deux sous-éléments, dont le PlayerCameraRoot.
Sur la Scène, positionnez le PlayerCapsule où doit se trouver le personnage initialement. Placez le PlayerFollowCamera au même endroit.
Sélectionnez le PlayerFollowCamera. Dans l’Inspector, il faut l’associer au personnage. Dans la case Follow, choisir le PlayerCameraRoot à la place de None.
Sélectionnez ensuite la Caméra principale, Main Camera. Ajoutez un Component en cliquant dans l’Inspector sur le bouton Add Component et chosissez Cinemachine > CinemachineBrain.
Orientez le PlayerCapsule pour que la fenêtre Game montre le point de vue initial souhaité.
Cliquez sur la flèche Play et déplacez-vous sur le jeu en déplaçant la souris pour tourner la tête, en utilisant les touches flèches de direction pour avancer ou reculer et en appuyant sur la barre d’espace pour sauter.
Il y a probablement d’autres touches pour d’autres actions, familières des gamers.
Essayez de faire passer votre personnage dans les maisons. Vous verrez qu’elles sont trop petites et qu’il faut les agrandir. Par ailleurs, supprimez leur Component RigidBody si elles en ont un et décochez la case Convex du Component Collider si besoin, sinon, le FPS sera bloqué et ne pourra pas passer à l’intérieur.
7c_ Utiliser les personnages des Standard Assets (désuet)
Si vous souhaitez encore utiliser les personnages des Standard Assets, suivre la méthode ci-dessous, bien que ce ne soit plus recommandé aujourd’hui.
Dans le Standard Assets Package, il y a deux personnages prêts à l’emploi. L’un est un joueur à la première personne (FPS = First Person Shooter) et l’autre à la troisième personne (TPS = Third Person Shooter).
Le premier n’est pas visible sur la Scene et le jeu est vu à travers ses yeux, par l’intermédiaire d’une « Camera embarquée ». Dans ce genre de jeu on est directement le joueur. C’est le cas des Shoot’em Up dans lesquels on voit parfois uniquement notre main ou une arme juste devant nous.
Le second est un personnage modélisé en 3D et animé, dont la présence, les mouvements et les déplacements sont clairement visibles. Dans ce type de jeu on observe son personnage jouer. Ce peut être typiquement un Soccer (Jeu de Football) par exemple.
Créez un nouveau fichier 3D Unity. Choisissez le Layout d’affichage par Default par le Menu Layout en haut à droite de la Barre d’outils. Placez un Sol et des Objets de votre choix sur la Scene. Importez les Standard Assets depuis l’Asset Store. Dans les Assets de l’onglet Project, vous trouverez ces personnages dans le dossier Standard Assets > Characters.
Repérez le First Person Controller > Prefabs > FPSController et faites-le glisser sur la Scene. Remontez-le un peu sur l’axe des Y pour qu’il soit situé au dessus du Sol.
Cliquez sur Play et déplacez-vous sur la Scene en déplaçant la Souris et en utilisant les touches de votre clavier :
– Flèches Up et Down pour avancer ou reculer
– Flèches Left et Right pour tourner à gauche ou à droite
– Barre d’espace pour sauter.
Ce Prefab possède bien d’autres possibilités, comme attraper des objets par exemple. Il contient un son de pas quand il se déplace, etc.
• Incompatibilités des personnages des Standards Assets
Les Standard Assets sont parfaitement compatibles avec la version 2018 ou 2017 d’Unity mais les deux Characters fournis posent problème avec la version 2019 et au delà, refusant de lancer le jeu.
Il faut pour corriger cela, fixer les erreurs affichées dans la Console. Allez dans le Menu Window > General > Console. Il y a deux types d’erreurs qui se présentent, celles en rouge qu’il faut corriger et celles en jaune.
Les erreurs rouges correspondent à du code obsolète. Dans le message d’erreur, il est fait allusion au fichier Script qui pose problème et entre parenthèses, le numéro de ligne de code où il y a erreur. Double-cliquez sur une première erreur. Le code doit s’ouvrir dans un logiciel associé à Unity, Visual Basic, mais vous pouvez le modifier dans les Préférences. Personnellement j’ai choisi Sublime Text comme éditeur de code, mais si Visual Basic fonctionne bien sur votre ordinateur, vous pouvez le conserver.


Une première erreur est dans le Script SimpleActivatorMenu.cs, à la ligne 11. La classe GUIText est obsolète.
Double Cliquez sur cette erreur. Cela ouvre le Script dans Visual Basic (ou autre éditeur).

Ajoutez une ligne après la ligne 2 et copiez-y le code suivant :
using UnityEngine.UI;
Modifiez la ligne 12 (c’était avant la ligne 11), comme suit (changer GUIText par Text) :
public Text camSwitchButton;
Enregistrez le fichier et fermez l’éditeur.
Unity charge de nouveaux Assets et normalement, tout va bien.
Il se peut cependant qu’une autre erreur apparaisse dans le Script ForcedReset.cs
Il faut alors rajouter la même ligne que plus haut à la ligne 3.
Et il faut remplacer « GUITexture » par « Image » .
Voir ci-dessous le lien web vers la page qui explique cette solution.
https://answers.unity.com/questions/1638555/guitexture-adn-guitext-are-obsolete-standard-asset.html
Pour résoudre cette incompatibilité, une solution plus radicale existe. Il suffit de supprimer les deux scripts qui posent problème (SimpleActivatorMenu.cs et Forcedreset.cs), voire même le dossier « Utility » dans lequel ils se trouvent. Il contient des scripts anciens dont vous ne devriez pas avoir besoin.
Pensez bien cependant à garder par ailleurs une version complète des Standard Assets, au cas où.
7d_ Créer un personnage avec Make Human
Pour créer un personnage personnalisé, il est possible d’utiliser Make Human. C’est un logiciel gratuit qui permet de créer des personnages prêts à être animés, avec un très grand potentiel de personnalisation, sur le genre, l’age, le type, les vêtements et accessoires…
Vous pouvez le télécharger à cette URL : http://www.makehumancommunity.org/content/downloads.html

Explorez les réglages pour créer le personnage dont vous avez besoin.
Vous pouvez télécharger plus de réglages à partir du site de la communauté, dans l’onglet Assets : http://www.makehumancommunity.org/content/user_contributed_assets.html
Allez ensuite dans l’Onglet Pose/Animate et choisissez le Skeleton > Game Engine.

Cliquez sur le Bouton Export en haut à gauche (la disquette avec une flèche orange). Cochez le Mesh Format Filmbox (.fbx) et le Scale Units en mètre à droite. Tapez un nom dans la zone de saisie en haut (ci-dessous Albert) et cliquez sur le bouton Export à droite de cette zone .

Le résultat est un dossier dans le Dossier Make Human du dossier Documents, comportant le fichier .fbx et les textures associées.
Il ne reste plus qu’à l’importer dans Unity.

Pour importer votre personnage dans Unity, faites glisser dans les Assets le fichier .fbx et le dossier de textures.
• Animer votre personnage
Vous pouvez utiliser les scripts d’animation fournis avec les Standard Assets et les associer à votre personnage.
Toutes les explications à partir de la minute 3’20 sur ce tuto en français : https://www.youtube.com/watch?v=oeSAhwSmXVw
7e_ Blender
Une dernière solution consiste à modéliser vous-même, dans Blender par exemple, un personnage à votre gout et à l’animer. C’est de loin la solution la plus complexe et nous ne l’étudierons pas ici.
8. Les Scenes ou comment créer des Niveaux
Dans un jeu il est courant d’utiliser plusieurs niveaux de jeu, a priori de plus en plus difficiles. Pour ce faire, il ne faut pas créer plusieurs fichiers différents mais autant de Scenes que de niveaux, dans un même fichier. Il ne faut cependant pas en abuser et selon le jeu, les niveaux peuvent se dérouler dans la même Scene.
Par défaut, un fichier Unity s’ouvre avec une Scene nommée « SampleScene » et enregistrée dans le dossier Scenes des Assets. Elle contient une Camera et une Directionnal Light.
Créez un nouveau document dans Unity.

Vous pouvez renommer la Scene existante par un Clic droit dessus dans les Assets > Rename. Nous allons renommer notre Scene « Level1 ».
Dans des versions plus anciennes d’Unity, un message vous propose alors de recharger cette Scène. Cliquez sur Reload.
Placez dans cette Scene un environnement quelconque. Pour ma part, j’ai placé un Cube, redimensionné qui servira de plate-forme. Sur ce sol, un autre Cube, placé à un bout servira à détecter une collision afin d’éviter que le joueur ne tombe.

Placez un second Cube, dimensionnez-le correctement et dans l’Inspector, décochez la case Mesh Renderer pour désactiver ce Component. Ainsi le Cube sera actif (son Collider est resté coché) mais invisible.
Il faut également cocher la case Is Trigger dans le Box Collider, c’est à dire qu’il sera déclencheur du chargement du niveau 2. Un Trigger sert au déclenchement d’une action. C’est un Collider qui peut être traversé!
Pour créer une seconde Scene, allez dans le Menu File > New Scene. Elle apparait sous le nom « Untitled » dans la Hierarchy. Il faut l’enregistrer, sinon, vous risquez de la perdre. Clic Droit > Save Scene as…
Enregistrez-là dans le même dossier que la première et nommez-la « Level2 ». Elle ne comporte, comme la première, qu’une Camera et une Light.
Il est en fait plus simple de double cliquer sur cette nouvelle Scene depuis les Assets. Il vous sera demander d’enregistrer le fichier.


Placez-y un objet pour la différencier de l’autre. Par exemple un Cube déformé pour faire un sol carré.
Voici le résultat ci-dessous des deux Scenes.


Pour passer d’une Scene à l’autre dans Unity, il suffit de double cliquer dessus dans les Assets. Par contre, dans le jeu, il faut créer un Script qui va permettre de passer de l’une à l’autre sur une condition, par exemple quand le joueur entre dans le Collider au Niveau1.
Placez un personnage FPS sur le plateau de la Scene initiale. Nous pourrions aussi placer une boule qui va se déplacer avec les flèches du clavier, jusqu’à rejoindre le Collider par exemple.
Créez un nouveau Script dans un sous-dossier Scripts des Assets. Nommez-le « Vers_level2 » et associez-le au Cube Collider , en le faisant glisser dessus, dans la Hierarchy ou sur la Scene.
Double-cliquez sur le Script pour l’éditer. Commencez par importez le SceneManagement en ligne 4 par l’ajout de la ligne :
using UnityEngine.SceneManagement;
Rajoutez à la suite des deux void (qu’il est possible de supprimer), le code ci-dessous. L’événement OnTriggerEnter() détecte la collision et déclenche le chargement du niveau 2 par LoadScene(). On peut déclarer le nom de la Scene entre guillemets (LoadScene(« Level2 ») ou par son ID LoadScene(1), qui est la Scene 2, le numéro 0 étant pour la première Scene.
C’est très simple. Enregistrez votre script.
public void OnTriggerEnter(){
SceneManager.LoadScene(1);
}
La commande Application.LoadLevel() à la place de LoadScene() est obsolète. Prenez-y garde car elle est encore présente dans de nombreux tutos.

Il reste à ajouter vos Scenes au Build, sans quoi rien ne va fonctionner. Le Build est la description de ce que vous allez inclure dans votre jeu et la plateforme à laquelle il est destiné. Allez dans le Menu File > Build Settings.
Faites glisser vos deux Scenes depuis les Assets vers le haut de la fenêtre Build Profiles > Scene List (ex Build Settings) et fermez cette fenêtre (il n’y a rien à valider).
Enregistrez le fichier.
Si vous avez un message de téléchargement xcrun, ignorez-le, a priori c’est pour Linux.

Testez en cliquant sur le bouton Play. Lorsque vous toucherez le Cube Collider, la Scène 2 va apparaitre. Il faut aussi placer un FPS sur cette Scene si vous voulez poursuivre le jeu et rajouter d’autres Scenes.
(Si vous utilisez encore un FPS des Standard Assets, pensez à désactiver dans la Scene1 la Main Camera préalablement, afin qu’elle n’entre pas en conflit avec celle du FPS).

Vous pouvez vous entrainer à ce que l’on vient de faire avec la Scene précédente contenant des arbres et des maisons. Placez un Cube Trigger dans une maison. Le passage du joueur déclenchera le passage à une autre Scene que je vous laisse le soin d’imaginer.
9. Exporter le jeu
Quand vous avez terminé votre travail, il faut exporter le jeu pour une plateforme donnée (ou plusieurs). Cela passe par des Modules qui doivent être installés. Si vous ne les avez pas installés avec l’application, il faut aller dans Unity Hub, dans l’onglet Installs, sur l’icône de la version installée, cliquer sur les points de suspension et choisir Add Modules.

Vous pourrez ainsi ajouter les Modules souhaités en les cochant et validez en cliquant sur le bouton Done. Les Modules se chargent.
Ils apparaissent ensuite dans les Build Settings. Si l’on coche par exemple Mac, Linux et Windows, cela exportera le jeu sous forme d’une application compatible avec la ou les systèmes choisis.
Cliquez alors sur le bouton Build, choisissez un nom et un emplacement.
Une fois terminé (cela peut être long) vous n’aurez plus qu’à lancer votre application par un double clic et… jouer!
10. Scripts
Il ne s’agit pas ici d’apprendre à coder en C#. Cependant, il est intéressant de voir quelques idées à mettre en place. Cela permettra également de décortiquer la structure d’un Script.
• Déplacer un objet avec les flèches du clavier avec des forces
Sur une Scene, celle du Level2 par exemple, placez un sol (avec un Cube ou un Plane) que vous dimensionnerez à votre convenance. Vous pouvez même faire un sol composé de plusieurs Cubes qui se touchent en laissant un trou quelque part.
Placez une Sphere, un Cylindre et un Cube sur ce sol. Utilisez l’Inspector pour positionner correctement les objets sur le sol. Il ne faut pas qu’ils soient enfoncés dans le sol, ne serait-ce qu’un peu.


Ajoutez un Component RigidBody à chacun de ces objets, sauf pour le sol. Vous pourrez jouer sur la masse de chaque objet, mais dans un premier temps, laissons les valeurs par défaut.
Le RigidBody va permettre à ces objets de subir la gravité et de réagir aux forces. Par exemple, si l’on pousse la Sphere dans une direction, elle va rouler dans cette direction. Le Cylinder va pouvoir rouler seulement dans une direction et le Cube va basculer si on le pousse assez fort.
Créez un Nouveau Script. Nommez-le « Roule » et appliquez-le à la Sphere. Double-Cliquez sur ce Script pour l’éditer.
Par défaut, un Script comprend 3 parties. Les trois premières lignes sont des appels à des bibliothèques nécessaires. On peut en rajouter selon le besoin (on l’a vu précédemment).
Puis, il y a toujours une Classe publique qui contient tout le code et qui porte le nom d’enregistrement du Script.
Entre accolades, le code contient deux fonctions void, une qui s’exécute une fois au début pour initialiser le programme, void Start(), et l’autre qui s’exécute en continu pour faire tourner le programme, void Update().
La zone avant le void Start() sert à déclarer les variables nécessaires. Sur la structure, cela ressemble à Processing ou Arduino en fait.
Le double Slash // permet d’insérer des commentaires.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Roule : MonoBehaviour
{
// Start is called before the first frame update
void Start(){
}
// Update is called once per frame
void Update(){
}
}
Nous allons rajouter le code nécessaire pour appliquer des forces avec les flèches du clavier. Le code final sera le suivant. Vous pouvez le copier :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Roule : MonoBehaviour
{
private Rigidbody rb;
private float horizontalInput;
private float verticalInput;
private float speed = 10.0f;
// Start is called before the first frame update
void Start(){
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update(){
horizontalInput = Input.GetAxis("Horizontal");
verticalInput = Input.GetAxis("Vertical");
}
void FixedUpdate(){
rb.AddForce(new Vector3(horizontalInput, 0.0f, verticalInput) * speed);
}
}
La première variable (RigidBody rb) sert à identifier les objets qui comportent un Component RigidBody. C’est l’inconvénient de ce code; il est trop global et ne sait pas s’adresser à un objet en particulier.
RigidBody est le type de la variable et rb est le nom qu’on lui a choisi.
On déclare ensuite deux variables (float horizontalInput et float verticalInput) pour identifier les flèches (Horizontales et Verticales) qui ont la valeur 1 ou -1 pour aller dans un sens ou un autre.
Enfin, la dernière variable (float speed) donne une force initiale quand on appuie sur les touches.
Dans le void Start() on initialise la variable « rb » afin de la lier aux objets concernés, c’est à dire tous les Objets RigidBody.
Dans le void Update(), on interprète l’appui sur les flèches afin de savoir dans quelle direction il faut aller.
Enfin, on crée une troisième fonction FixedUpdate qui réagit à l’appui sur les flèches en calculant une force et en l’appliquant aux objets concernés.
Le jeu peut être de mettre la Sphere dans le trou central, où, en ajoutant un Collider invisible de type Trigger, on peut déclencher le passage au niveau suivant, comme vu plus haut.
• Méthode alternative
Une autre solution souvent utilisée pour cela consiste à utiliser la fonction Translate(). On la voit souvent dans des tutos. Par exemple :
https://www.youtube.com/watch?v=sXQI_0ILEW4 (11:05)
Voici, ci-dessous le code issu de cette vidéo, afin de déplacer un objet avec les touches de contrôle Flèches du clavier. Ces touches sont modifiables par le Menu Edit > Project Settings onglet Input Manager > Horizontal et Vertical.
ATTENTION, si vous utilisez un personnage FPS ou TPS, ces touches sont déjà utilisées pour contôler le personnage. Ce sera donc incompatible.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class moveCube : MonoBehaviour
{
public float moveSpeed;
void Start() {
moveSpeed = 1f;
}
void Update() { transform.Translate(moveSpeed*Input.GetAxis("Horizontal")*Time.deltaTime, 0f, moveSpeed*Input.GetAxis("Vertical")*Time.deltaTime);
}
}
Si vous voulez déclencher un événement en choisissant sur quelle touche agir (par exemple, déplacer un objet avec la touche x), il faut remplacer le void Update du script précédent par celui-ci :
void Update() {
if(Input.GetKey("x")) {
transform.Translate(moveSpeed*Time.deltaTime, 0f, 0f);
}
}
Par ailleurs, le fait de créer une variable publique (moveSpeed dans le script précédent) ajoute une zone de réglage dans le Component Script de l’objet auquel il est associé. Voir ci-dessus pour un cube.
Il faut préalablement commenter la ligne du void Start() :
// moveSpeed = 1f;
Puis vous pouvez saisir une valeur, 10 par exemple, à la place de 0 dans le Component Script. Lancez le jeu et constatez que le cube avance 10 fois plus vite lorsqu’on appuie sur la touche dédiée.
























