Académique Documents
Professionnel Documents
Culture Documents
Shoot’èm Up
Pour commencer, tu vas devoir créer un nouveau projet Unity. Pour cela, ouvre UnityHub, clique sur la
flèche à côté du bouton “new” puis sélectionne la version d’Unity que nous vous avons fait installer.
UnityHub va alors te demander plusieurs informations : le template que tu souhaites utiliser, 2D suffira
pour notre projet ; le nom du projet ainsi que son emplacement dans tes dossiers. Une fois remplies,
clique sur “Create”.
Premier petit point, sur Unity les éléments du jeu sont référencés avec différents noms.
En premier, on va trouver les « Scene », c’est elles qui vont s’occuper de tous les autres éléments du
jeu. On peut donc créer plusieurs « Scene » qui vont posséder des éléments différents, ce qui permet
de faire par exemple une « Scene » pour le menu, pour le jeu, pour les options, …
Ensuite, on va trouver les « GameObject » stockés dans les « Scene ». Chaque entité de ton jeu est un
« GameObject » : les personnages, les ennemis, les plantes, le sol, le ciel, les armes, la lumière, les
liquides, … Tout est « GameObject » !
Cependant, chacune de ces entités devra se comporter différemment pour faire son rôle de
personnage ou de liquide par exemple. Pour cela, il va falloir leurs ajouter des « Component »
(comportement) qui seront donc lié aux entités et vont définir les comportements qu’ils auxquels ils
devront se plier. Il existe différents « Component » par défaut dans Unity, on appelle « Script » les
components que toi, développeur, va créer (en c# sur Unity) pour les entités de ton jeu.
Pro-Tips : Il existe un système de parent/enfant pour les GameObject dans Unity. En glissant déposant
un GameObject dans un autre sur l’onglet Hierarchy, cela permet de créer ce lien de parenté. Ce lien
sert par exemple pour le Component « Transform » qui gère la position, la rotation et la mise à
l’échelle, à ce que l’enfant hérite de ces transformations. Donc si tu déplace le parent, les enfants
bougeront également avec le même vecteur de déplacement.
Dans un Script, tu as la possibilité de créer des variables propres à la class, ainsi que des fonctions
qui seront utilisable depuis Start() ou Update().
Lorsque tu crées un élément (variable ou fonction par exemple) tu peux préciser le niveau de sa
protection. Il y a deux niveaux : Private et Public. Par défaut, un élément est public à moins que tu ne lui
spécifies. Un élément Private ne sera pas accessible par les autres class et ne sera pas visible dans
l’onglet Inspector d’Unity, alors qu’un élément Public sera utilisable par d’autre class et visible dans
l’onglet Inspector.
Pro-Tips : Si la protection te tient à cœur, tu peux rajouter le mot-clé [SerializeField] devant une
variable Private, de cette façon elle sera tout de même affichée dans l’onglet Inspector.
Ensuite, en c# les variables n’ont pas de types automatique, tu vas donc devoir le préciser également.
Il existe de nombreux type de variable, en voici quelques-uns :
« float » est utilisé pour les chiffres à virgule (en code, on utilise un point, attention),
Une class est également un type. Tu auras sûrement à utiliser « GameObject » pour stocker une
référence d’une autre entité ou « NomD’unComponent » pour stocker la référence d’un Component,
porté par ce GameObject ou un autre.
Donc, pour créer une variable, tu dois : préciser sa protection, définir son type puis lui donner un nom.
Comme ceci :
Pour créer une fonction, tu vas devoir : préciser sa protection, écrire le type de la valeur qui sera
retourné à la fin de la fonction (si aucun type, utilise « void »), puis tu lui donnes un joli nom, et ensuite
viens les parenthèses. Elles servent à récupérer des arguments que tu as besoin pour l’exécution de
ta fonction. Tu peux donc, soit ne rien mettre dedans, tu ne recevras donc rien, soit demandé des
variables en écrivant sous la forme type plus nom. Tu peux en demander autant que tu veux tant que tu
sépares les variables avec des virgules.
Input Clavier
Nous avons besoin de savoir si une touche est appuyé ou non, pour ça nous allons utiliser :
Cette fonction nous renvoie true si la touche spécifiée est appuyée ou non. Pour spécifier la touche tu
dois utiliser KeyCode.[Key], ce qui donne pour Z :
Et voilà tu as toutes les clés en main pour faire bouger ton GameObject.
Si tu as besoin d’inspiration, voici à quoi devrait ressembler ton code pour déplacer un GameObject
dans toutes les directions avec ZQSD. (En remplaçant les ? par des valeurs bien sûr)
Dans Unity tu as plusieurs types de collisions à ta disposition (Box, Sphère, …). Elles sont représentées
en vert dans l’Editeur.
Une fois les propriétés de ta collision définie, il faut pouvoir réagir quand une collision se fait. Pour
cela Unity te met à dispositions plusieurs fonctions que tu as juste à définir.
Par exemple, si tu veux afficher un message à chaque collision, tu peux faire comme ça :
1Un trigger est une zone ou une entité peut entrer (contrairement à une collision classique), elle permet de lancer un
évènement quand un joueur est dans une zone par exemple.
Instantiate
La fonction Instantiate est une fonction proposer par Unity pour pouvoir créer un GameObject lors de
l’exécution du jeu.
A chaque frame je regarde si la touche A est appuyée. Si elle l’est, je vais créer un objet avec comme
modèle l’objet copy que je définis dans l’éditeur.
Par exemple :
A chaque frame je regarde si la touche A est appuyée, si elle l’est je vais détruire le GameObject qui
contient le script. (Le destroy supprime le GameObject juste du jeu, pas du projet)