Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ajout d'un cours Unity débutant. #58

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions content/courses/unity/01-les-bases/01-decouverte-de-unity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
title: "Découverte de Unity"
description: "Dans cette section, nous allons comprendre ce qu'est Unity et ce qu'il est possible de faire avec ce logiciel."
---

Unity est un moteur de jeu très populaire qui permet de développer des jeux pour toutes les plateformes (PC, MAC, Linux, Consoles, Android, iOS, Web…). Vous développez votre projet une fois et vous pouvez l’exporter pour n’importe quelle plateforme. C’est un atout majeur et un gain de temps considérable. La création de jeux se fait sous Unity (pour la partie conception des niveaux, paramétrages, assemblage des éléments…) et sous un éditeur de code comme Visual Studio pour la partie développement. Le langage de programmation utilisé dans Unity est le C#. Il s’agit d’un langage plus simple à apprendre que le C++ car la syntaxe est moins lourde.

Unity est un éditeur WYSIWYG (What you see is what you get). En d’autres mots, tout ce que vous créez dans Unity (par exemple un niveau) sera visible tel quel par le joueur final. Cela est bien pratique car vous pouvez tester vos niveaux à la volée et savoir quel sera le rendu final sur l’écran de l’utilisateur. Le tout se passe dans une interface intuitive et assez simple à prendre en main.

![L'interface de Unity](./unity_interface.png)
_L'interface du logiciel Unity et un exemple de projet_

Malgré tout, Unity existe depuis 2005 environ (le logiciel existait déjà avant mais sous un autre nom et non accessible au grand public) et dispose aujourd’hui de très nombreuses fonctionnalités. La principale difficulté dans l’apprentissage de Unity est donc de s’y retrouver dans la quantité d’informations et d’outils.

Ce cours a pour but de vous accompagner dans la prise en main de Unity de façon simple en utilisant des fonctionnalités basiques afin de démarrer en douceur. Les quelques fonctionnalités que nous apprendrons vous seront cependant utiles pour l’ensemble de vos futurs projets car je me concentrerai sur ce qui est le plus utilisé pour créer des jeux. Pour découvrir comment créer des jeux avec Unity, je vous propose de développer une sorte de clone de Pong en 3D avec une caméra fixe. Cela nous permettra d’apprendre en nous basant sur un projet concret.

Enfin, pour terminer cette petite présentation, je précise que si votre but est de créer un jeu AAA comme GTA, Fortnite, Warcraft, Hogwarts legacy ou autre, vous n’êtes pas au bon endroit. En effet ces jeux sont développés durant des années, par des centaines (ou milliers) de développeurs et nécessitent des millions de dollars d’investissement tout au long du développement. Il n’est pas possible de développer de tels jeux tout seul ou en petite équipe. A notre niveau, ce que nous pouvons faire se sont de petits jeux indépendants, principalement à destination des mobiles car c’est ce qui reste le plus simple. En revanche, après avoir créé plusieurs petits projets, après avoir acquis une forte expérience et après avoir fait vos preuves, vous pourrez trouver un emploi dans le secteur et potentiellement travailler sur un gros projet dans le futur.

Cela étant dit, commençons par télécharger Unity.
62 changes: 62 additions & 0 deletions content/courses/unity/01-les-bases/02-premier-lancement.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
title: "Premier lancement"
description: "Téléchargez, installez et ouvrez et découvrez Unity."
---

Avant toute chose, nous devons télécharger le logiciel afin de pouvoir l’installer. Pour cela, je vous invite à vous rendre sur le [site officiel](https://unity.com/fr) et à vous rendre dans la section [téléchargement](https://unity.com/fr/download) afin de télécharger la version de Unity HUB qui correspond à votre système d’exploitation.

Unity HUB est un petit utilitaire qui vous permet de télécharger Unity et de gérer différentes versions du logiciel. Vous pouvez en effet avoir plusieurs versions du logiciel installées en simultané sur votre ordinateur. Le HUB vous permettra de lancer vos différents projets avec la bonne version de Unity.

Unity est un logiciel gratuit (tant que vous réalisez un chiffre d’affaires de moins de 100 000 $ par an). Pensez bien à choisir la version « Personnal » lorsque vous aurez à choisir votre situation. La version personnal est gratuite mais nécessite de créer un compte sur le site de Unity pour pouvoir l’activer. De plus, votre compte vous permettra aussi de télécharger des ressources sur l’assetstore (magasin de Unity qui regroupe des milliers de modèles 3D, textures, musiques etc.).

Une fois Unity HUB installé, vous retrouverez sur la gauche de la fenêtre le menu `Installs` qui vous permettra d’installer Unity :

![Unity HUB](./1_unity_hub.png)
_Installer Unity depuis Unity HUB_

Cliquez sur `Install Editor` afin de choisir la version de Unity que vous souhaitez installer. Je vous recommande d’installer la version LTS la plus récente. Les versions LTS sont celles qui disposent de mises à jour sur le long terme.

Depuis Unity HUB vous avez accès à toutes les versions de Unity, les anciennes, les nouvelles mais aussi les versions en alpha ou bêta. Évitez d’utiliser des pré-versions pour de vrais projets. Ces versions en cours de développement permettent juste de tester et d’apprendre en avance mais ne sont pas faites pour être utilisées pour de la production. Cliquez sur le bouton `Install` qui correspond à la version que vous souhaitez installer :

![Installer Unity](./2_unity_hub_install.png)
_Choix de la version à installer_

Sachez que ce qui est présenté dans ce cours devrait marcher peu importe la version que vous utilisez. Donc si au moment où vous lisez ce cours la version LTS est différente, cela ne devrait pas poser de problème.

Lorsque vous cliquez sur `Install` une popup s’ouvre et vous invite à sélectionner les fonctionnalités que vous souhaitez installer. Vous pouvez par exemple installer les outils de développement pour mobiles, consoles, TV connectées, navigateurs etc. Dans un premier temps, je vous recommande d’installer uniquement la version standard (qui fait déjà plus de 5 Gb) et d’installer Visual Studio Community afin de pouvoir développer avec le langage de programmation C#. Visual studio est indispensable pour bien suivre ce cours. Si jamais vous rencontrez des difficultés avec l’installation de Visual Studio, vous pouvez le télécharger et l’installer manuellement en téléchargeant l’installeur sur le [site officiel](https://visualstudio.microsoft.com/fr/downloads/).

Une fois les options cochées, cliquez sur « Install » pour poursuivre et allez jusqu’au bout du processus d’installation.

Avant de poursuivre, pour être sûr que Visual Studio est correctement installé, je vous invite à ouvrir Visual Studio Installer. Si vous n’avez pas cet utilitaire, vous pouvez le retrouver sur le [site de Microsoft](https://visualstudio.microsoft.com/fr/downloads/).

Comme pour Unity HUB, Visual Studio Installer est un utilitaire qui vous permet de gérer les différentes versions du logiciel. Vérifiez que le logiciel est installé et cliquez sur le bouton `Modifier` afin d’afficher les fonctionnalités activées :

![VS Installer](./3_unity_vs_installer.png)
_Modifier Visual Studio depuis VS Installer_

Ici, ce que je souhaite que vous vérifiiez, c’est que le développement de jeux avec Unity est bien installé :

![Outils de jeux pour VS](./4_unity_vs_installer_unity.png)
_Développer des jeux pour Unity avec Visual Studio_

Si ce n’est pas le cas, faites le nécessaire. Cela permettra de programmer plus efficacement grâce à un assistant intelligent.

Retournons sur Unity HUB et cliquez sur `New project` afin de créer un nouveau projet. Choisissez le type de projet `3D`, donnez un nom à votre projet, sélectionnez un emplacement puis cliquez sur `Create project` pour valider :

![Création d'un projet Unity](./5_unity_projet_3d.png)
_Création d'un nouveau projet 3D sous Unity_

Le projet va alors se créer et Unity Editor devrait s’ouvrir. Je vous propose de regarder rapidement l’interface du logiciel pour comprendre comment celle-ci est découpée :

![Interface Unity](./6_unity_interface.png)
_L'interface de Unity_

Avant tout, sachez que toutes les zones de l’interface peuvent être redimensionnées, déplacées, masquées, ajustées. Vous pouvez donc adapter l’interface à vos besoins. Je vais essayer cependant de garder l’interface par défaut afin que ce soit plus facile pour vous pour débuter. J’ai découpé les principales zones par couleur :

- **En jaune**, vous avez le menu et la barre d’outils. Vous y retrouverez quelques raccourcis dont certains qui permettent de manipuler les modèles 3D et d’autres qui permettent de tester le jeu à la volée directement dans Unity.
- **En rouge** vous avez la hierarchy (J’utiliserai toujours le mot anglais car Unity n’existe pas en français). Il s’agit de la liste de tous les éléments composant votre scène.
- **En vert** la scene (encore une fois en anglais donc sans accent). C’est là que vous allez concevoir vos niveaux, placer les objets, manipuler les assets (ressources). Vous avez également un système d’onglets permettant de basculer de la scene au game. Game est la fenêtre correspondant au rendu final de votre jeu tel que le verra le joueur. C’est dans cette zone que vous pourrez tester le projet.
- **En bleu** l’inspector. Lorsque vous sélectionnerez un objet sur la scène, vous verrez l’ensemble de ses propriétés et caractéristiques directement dans l’inspector.
- **En violet** le project. C’est ici que vous retrouverez toutes les ressources (assets) que vous aurez importées dans Unity. Ces ressources seront utilisables pour concevoir votre jeu. Dans un onglet séparé vous aurez la console qui affichera les différentes erreurs de votre code afin de vous aider à les corriger.

Voila rapidement ce qui compose l’interface du logiciel. Nous aurons l’occasion de découvrir plus en détail les différentes zones au moment où nous aurons à les utiliser dans la suite de ce cours.
95 changes: 95 additions & 0 deletions content/courses/unity/01-les-bases/03-terrain-de-jeu.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
---
title: "Création du terrain de jeu"
description: "Nous allons créer le terrain sur lequel les joueurs pourront s'affronter."
---

Dans cette partie, nous allons voir comment concevoir le niveau de notre jeu. Ce que je vous propose c’est d’apprendre en faisant. Comme notre objectif est de créer un clone de Pong, notre scène sera très basique. Nous allons commencer par créer le sol du niveau. Pour cela, cliquez sur le menu `GameObject / 3D Object / Plane` :

![Création du sol](./7_unity_plane.png)
_Création d'un Plane pour représenter le sol_

Cela va nous permettre de créer une forme plane. Si vous ne touchez à rien, la forme sera sélectionnée par défaut à sa création. Si vous cliquez à côté alors elle sera désélectionnée. Vous pourrez alors cliquer dessus ce plan pour le sélectionner de nouveau. Si un objet est sélectionné vous pourrez visualiser toutes ses propriétés dans l’inspector :

![Propriétés du plane](./8_unity_plane_props.png)
_Les propriétés du plane_

Si on analyse ces différentes propriétés nous pouvons retrouver :

- **Transform** : correspond à la position, la rotation et l’échelle de la forme 3D.
- **Mesh Renderer** : correspond au composant qui permet de rendre visible le modèle à l’écran. Si ce composant est décoché (désactivé) alors le modèle 3D sera invisible (mais toujours présent).
- **Mesh Collider** : c’est le composant qui permet de rendre solide la forme. Grâce au collider, les collisions peuvent être détectées.
- **Material** : ce composant permet de donner la couleur à l’objet. Un material est un composant complexe qui peut gérer beaucoup de choses comme la couleur, la texture, la façon dont la lumière interagit avec l’objet, la texture de l’objet, la transparence…

Il est possible de modifier ces propriétés directement via l’inspector ou par glisser/déposer du project sur la scène. Si vous vous souvenez bien, la fenêtre project contient vos ressources. Si vous avez par exemple une texture dans project et que vous la glissez/déposez sur le plan alors le material du plan sera modifié et contiendra la texture déposée.

Dans notre cas nous n’allons pas utiliser de texture. Nous allons plutôt créer un nouveau material avec une couleur spécifique. Dans la fenêtre project faites un clic droit et sélectionnez `Create / Material` :

![Création d'un material](./9_unity_plane_mat.png)
_Création d'un material pour le sol_

Comme vous pouvez le constater vous pouvez renommer votre material. Dans mon cas j’ai donné un nom au material afin de mieux m’y retrouver.

Cliquez sur ce material nouvellement créé afin d’afficher ses propriétés dans l’inspector. Modifiez sa couleur via le color picker afin de choisir une teinte bleu foncé :

![Choix de la couleur](./10_unity_plane_color.png)
_Choix de la couleur du sol_

Une fois votre material prêt, faites un glisser/déposer de celui-ci sur le plan de la scène :

![Ajout de la couleur](./11_unity_plane_set_color.png)
_Coloration du sol à l'aide du material_

Maintenant nous allons modifier la taille du plan afin que tout le monde ait exactement la même forme que moi. Nous allons agrandir le plan et l’étendre sur la longueur. Cliquez sur le plan afin d’afficher ses propriétés dans l’inspector et modifiez la position et le scale en utilisant les mêmes paramètres que moi :

![Paramétrage du transform](./12_unity_plane_transform.png)
_Paramétrage du Transform_

Nous allons maintenant ajouter des bordures à gauche et à droite de notre niveau. Pour cela nous allons créer un cube via le menu `GameObject / 3D Object / Cube` :

![Ajout d'un cube 3D](./13_unity_cube.png)
_Ajout d'un cube 3D_

Positionnez le cube (via l’inspector) en `-12, 0.5, 0`.

Modifiez sa taille en `1, 1, 30`.

Le résultat devrait être le suivant :

![Un mur 3D](./14_unity_wall.png)
_Propriétés du Transform du mur gauche_

Vous pouvez alors dupliquer ce cube. Pour cela, avec le cube sélectionné, faites `CTRL + D`. Le cube sera alors dupliqué. Vous ne pouvez pas le voir car les 2 cubes sont superposés mais si vous regardez la fenêtre hierarchy vous verrez les 2 cubes.

Le second cube étant sélectionné, maintenez la touche `CTRL` de votre clavier et utilisez la flèche rouge (il s’agit d’une flèche visible parmi les 3 axes) afin de déplacer le cube. La touche `CTRL` permet de déplacer le cube cran par cran afin de garder une position précise. L’idée est de placer le second cube à l’autre extrémité du sol (soit x = 12) :

![Position du mur 3D](./15_unity_wall_pos.png)
_Duplication du mur_

![Position du mur 3D](./15_unity_wall_pos.gif)
_Duplication du mur (animation)_

Dans Unity nous avons la possibilité de renommer les objets (on en a déjà parlé, c’est utile pour s’y retrouver dans la fenêtre hierarchy) et nous avons aussi la possibilité d’ajouter un tag à un objet. Le tag permet en général de classer un objet. On peut par exemple imaginer de taguer les pièces en `coin`, les portes en `door`, les pièges en `trap` etc. Le but est ensuite de pouvoir par la suite, interagir avec ces objets via un script C# en les ciblant grâce à ce tag.

Dans notre cas présent, nous allons avoir besoin de tags. Nous allons avoir besoin de savoir si la balle touche un côté (un mur) du niveau afin de pouvoir faire rebondir la balle. Je vous propose donc de créer le tag `Side` (qui signifie côté) afin de pouvoir taguer les côtés du niveau. Pour créer un tag, cliquez sur le menu déroulant `Tag` via l’inspector (attention, pour voir ce menu, un objet doit être sélectionné) et sélectionnez `Add Tag` :

![Ajout d'un tag](./16_unity_tag.png)
_Liste des tags_

Puis dans la liste des tags, cliquez sur le petit plus pour ajouter un tag personnalisé et saisissez `Side` :

![Ajout d'un tag](./17_unity_tag_side.png)
_Ajout d'un tag_

Pensez à cliquer sur `Save`. Retournez sur la scène et sélectionnez le mur de gauche. Maintenez la touche `CTRL` enfoncée et cliquez sur le mur de droite. Cela permet de faire une sélection simultanée des deux objets.

Avec ces deux objets sélectionnés, retournez dans le menu déroulant des tags afin de sélectionner le tag nouvellement créé pour l’appliquer à la sélection :

![Ajout du tag au cube](./18_unity_tag_add.png)
_Ajout du tag au mur_

Les côtés de notre niveau seront maintenant facilement identifiables dans un script C#. Nous verrons cela dans une prochaine section du cours.

A chaque fin de section, pensez bien à enregistrer votre travail avec un `CTRL + S`. Cela sauvegardera la scène actuelle qui s’appelle par défaut `SampleScene` et qui se trouve dans le dossier `Scenes` :

![Scène sauvegardée](./19_unity_scene.png)
_La scène sauvegardée_
Loading