Tutoriel Complet Unity Défi 1download.microsoft.com/documents/France/microsoft-et-le... ·...

114
Tutoriel Complet Unity Défi 1 0 Découverte du terrain de jeu 0.1 Téléchargement d’Unity3D 0.2 Création de son compte 0.3 Création d’un projet 0.4 La découpe de l'environnement de travail 0.5 Organisation simple des dossiers du projet 1 Plante le décor Objectif Ce que tu vas apprendre Méthodologie 1.1 Les gameObjects et les Prefabs 1.2 les terrains. 1.3 Textures et Materials 1.4 La Skybox. 1.5 Asset store 2 Construit tes personnages Objectif Ce que tu vas apprendre Méthodologie 2.1 Créer une Sprite Sheet 2D 3 Anime tes personnages Objectif Ce que tu vas apprendre Méthodologie 3.1 Les Animations 3.2 Les Animator 3.2 Les scripts dans unity 3.4 Inputs C# 3.5 Les Animations avec du C#

Transcript of Tutoriel Complet Unity Défi 1download.microsoft.com/documents/France/microsoft-et-le... ·...

Tutoriel Complet Unity shy Deacutefi 1

0 shy Deacutecouverte du terrain de jeu 01 shy Teacuteleacutechargement drsquoUnity3D 02 shy Creacuteation de son compte 03 shy Creacuteation drsquoun projet 04 shy La deacutecoupe de lenvironnement de travail 05 shy Organisation simple des dossiers du projet

1 shy Plante le deacutecor Objectif Ce que tu vas apprendre Meacutethodologie

11 shy Les gameObjects et les Prefabs 12 shy les terrains 13 shy Textures et Materials 14 shy La Skybox 15 shy Asset store

2 shy Construit tes personnages Objectif Ce que tu vas apprendre Meacutethodologie

21 shy Creacuteer une Sprite Sheet 2D 3 shy Anime tes personnages

Objectif Ce que tu vas apprendre Meacutethodologie

31 shy Les Animations 32 shy Les Animator 32 shy Les scripts dans unity 34 shy Inputs C 35 shy Les Animations avec du C

0 shy Deacutecouverte du terrain de jeu

01 shy Teacuteleacutechargement drsquoUnity3D

1 Aller sur le site drsquoUnity pour teacuteleacutecharger le logiciel via le lien suivant

httpsunity3dcomgetshyunity

1 Teacuteleacutecharger lrsquoeacutedition PERSONAL qui est totalement gratuite en cliquant sur le bouton FREE DOWNLOADrdquo

1 Cliquer sur le bouton DOWNLOAD INSTALLER

1 Une fois teacuteleacutechargeacute cliquer sur UnityDownloadAssistantexe en bas du navigateur

1 Une fenecirctre srsquoouvre cliquer sur Next gt

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

1 Cliquer sur Next

1 Pensez agrave cocher la case WebGL ce qui nous permettra drsquoexporter le jeu sur

Chrome Firefox et autres navigateurs

1 Cliquer sur Next gt

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

si une fenecirctre vous le demandant apparaicirct

1 Le teacuteleacutechargement se lance A la fin de ce dernier cliquer sur Finish Unity est installeacute sur votre ordinateur

02 shy Creacuteation de son compte

1 Lancer Unity

1 Cliquer sur le bouton SIGN IN

1 Si vous nrsquoavez pas de compte avec lequel vous identifier Unity vous propose de

vous en creacuteer un Cliquez sur create one

1 Unity vous ouvre alors une page internet ougrave vous devez renseigner toutes les

informations relatives agrave la creacuteation de votre compte Agrave noter que pour le mot de passe il doit faire 8 caractegraveres minimum avec au moins une majuscule une minuscule et un chiffre

1 Vous recevrez un mail de confirmation sur votre boicircte mail Cliquez sur Confirm

Email

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

0 shy Deacutecouverte du terrain de jeu

01 shy Teacuteleacutechargement drsquoUnity3D

1 Aller sur le site drsquoUnity pour teacuteleacutecharger le logiciel via le lien suivant

httpsunity3dcomgetshyunity

1 Teacuteleacutecharger lrsquoeacutedition PERSONAL qui est totalement gratuite en cliquant sur le bouton FREE DOWNLOADrdquo

1 Cliquer sur le bouton DOWNLOAD INSTALLER

1 Une fois teacuteleacutechargeacute cliquer sur UnityDownloadAssistantexe en bas du navigateur

1 Une fenecirctre srsquoouvre cliquer sur Next gt

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

1 Cliquer sur Next

1 Pensez agrave cocher la case WebGL ce qui nous permettra drsquoexporter le jeu sur

Chrome Firefox et autres navigateurs

1 Cliquer sur Next gt

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

si une fenecirctre vous le demandant apparaicirct

1 Le teacuteleacutechargement se lance A la fin de ce dernier cliquer sur Finish Unity est installeacute sur votre ordinateur

02 shy Creacuteation de son compte

1 Lancer Unity

1 Cliquer sur le bouton SIGN IN

1 Si vous nrsquoavez pas de compte avec lequel vous identifier Unity vous propose de

vous en creacuteer un Cliquez sur create one

1 Unity vous ouvre alors une page internet ougrave vous devez renseigner toutes les

informations relatives agrave la creacuteation de votre compte Agrave noter que pour le mot de passe il doit faire 8 caractegraveres minimum avec au moins une majuscule une minuscule et un chiffre

1 Vous recevrez un mail de confirmation sur votre boicircte mail Cliquez sur Confirm

Email

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Une fois teacuteleacutechargeacute cliquer sur UnityDownloadAssistantexe en bas du navigateur

1 Une fenecirctre srsquoouvre cliquer sur Next gt

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

1 Cliquer sur Next

1 Pensez agrave cocher la case WebGL ce qui nous permettra drsquoexporter le jeu sur

Chrome Firefox et autres navigateurs

1 Cliquer sur Next gt

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

si une fenecirctre vous le demandant apparaicirct

1 Le teacuteleacutechargement se lance A la fin de ce dernier cliquer sur Finish Unity est installeacute sur votre ordinateur

02 shy Creacuteation de son compte

1 Lancer Unity

1 Cliquer sur le bouton SIGN IN

1 Si vous nrsquoavez pas de compte avec lequel vous identifier Unity vous propose de

vous en creacuteer un Cliquez sur create one

1 Unity vous ouvre alors une page internet ougrave vous devez renseigner toutes les

informations relatives agrave la creacuteation de votre compte Agrave noter que pour le mot de passe il doit faire 8 caractegraveres minimum avec au moins une majuscule une minuscule et un chiffre

1 Vous recevrez un mail de confirmation sur votre boicircte mail Cliquez sur Confirm

Email

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

1 Cliquer sur Next

1 Pensez agrave cocher la case WebGL ce qui nous permettra drsquoexporter le jeu sur

Chrome Firefox et autres navigateurs

1 Cliquer sur Next gt

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

si une fenecirctre vous le demandant apparaicirct

1 Le teacuteleacutechargement se lance A la fin de ce dernier cliquer sur Finish Unity est installeacute sur votre ordinateur

02 shy Creacuteation de son compte

1 Lancer Unity

1 Cliquer sur le bouton SIGN IN

1 Si vous nrsquoavez pas de compte avec lequel vous identifier Unity vous propose de

vous en creacuteer un Cliquez sur create one

1 Unity vous ouvre alors une page internet ougrave vous devez renseigner toutes les

informations relatives agrave la creacuteation de votre compte Agrave noter que pour le mot de passe il doit faire 8 caractegraveres minimum avec au moins une majuscule une minuscule et un chiffre

1 Vous recevrez un mail de confirmation sur votre boicircte mail Cliquez sur Confirm

Email

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Cliquer sur Next

1 Pensez agrave cocher la case WebGL ce qui nous permettra drsquoexporter le jeu sur

Chrome Firefox et autres navigateurs

1 Cliquer sur Next gt

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

si une fenecirctre vous le demandant apparaicirct

1 Le teacuteleacutechargement se lance A la fin de ce dernier cliquer sur Finish Unity est installeacute sur votre ordinateur

02 shy Creacuteation de son compte

1 Lancer Unity

1 Cliquer sur le bouton SIGN IN

1 Si vous nrsquoavez pas de compte avec lequel vous identifier Unity vous propose de

vous en creacuteer un Cliquez sur create one

1 Unity vous ouvre alors une page internet ougrave vous devez renseigner toutes les

informations relatives agrave la creacuteation de votre compte Agrave noter que pour le mot de passe il doit faire 8 caractegraveres minimum avec au moins une majuscule une minuscule et un chiffre

1 Vous recevrez un mail de confirmation sur votre boicircte mail Cliquez sur Confirm

Email

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Cliquer sur Next gt

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

si une fenecirctre vous le demandant apparaicirct

1 Le teacuteleacutechargement se lance A la fin de ce dernier cliquer sur Finish Unity est installeacute sur votre ordinateur

02 shy Creacuteation de son compte

1 Lancer Unity

1 Cliquer sur le bouton SIGN IN

1 Si vous nrsquoavez pas de compte avec lequel vous identifier Unity vous propose de

vous en creacuteer un Cliquez sur create one

1 Unity vous ouvre alors une page internet ougrave vous devez renseigner toutes les

informations relatives agrave la creacuteation de votre compte Agrave noter que pour le mot de passe il doit faire 8 caractegraveres minimum avec au moins une majuscule une minuscule et un chiffre

1 Vous recevrez un mail de confirmation sur votre boicircte mail Cliquez sur Confirm

Email

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Cocher la case ldquoI accept the terms of the License Agreementrdquo puis cliquer sur Next gt

si une fenecirctre vous le demandant apparaicirct

1 Le teacuteleacutechargement se lance A la fin de ce dernier cliquer sur Finish Unity est installeacute sur votre ordinateur

02 shy Creacuteation de son compte

1 Lancer Unity

1 Cliquer sur le bouton SIGN IN

1 Si vous nrsquoavez pas de compte avec lequel vous identifier Unity vous propose de

vous en creacuteer un Cliquez sur create one

1 Unity vous ouvre alors une page internet ougrave vous devez renseigner toutes les

informations relatives agrave la creacuteation de votre compte Agrave noter que pour le mot de passe il doit faire 8 caractegraveres minimum avec au moins une majuscule une minuscule et un chiffre

1 Vous recevrez un mail de confirmation sur votre boicircte mail Cliquez sur Confirm

Email

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

02 shy Creacuteation de son compte

1 Lancer Unity

1 Cliquer sur le bouton SIGN IN

1 Si vous nrsquoavez pas de compte avec lequel vous identifier Unity vous propose de

vous en creacuteer un Cliquez sur create one

1 Unity vous ouvre alors une page internet ougrave vous devez renseigner toutes les

informations relatives agrave la creacuteation de votre compte Agrave noter que pour le mot de passe il doit faire 8 caractegraveres minimum avec au moins une majuscule une minuscule et un chiffre

1 Vous recevrez un mail de confirmation sur votre boicircte mail Cliquez sur Confirm

Email

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Unity vous ouvre alors une page internet ougrave vous devez renseigner toutes les

informations relatives agrave la creacuteation de votre compte Agrave noter que pour le mot de passe il doit faire 8 caractegraveres minimum avec au moins une majuscule une minuscule et un chiffre

1 Vous recevrez un mail de confirmation sur votre boicircte mail Cliquez sur Confirm

Email

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Vous recevrez un mail de confirmation sur votre boicircte mail Cliquez sur Confirm

Email

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Une nouvelle page internet srsquoouvre votre compte a eacuteteacute creacuteeacute

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Retournez sur le logiciel Unity et entrez vos identifiants utilisateur votre mail et mot de passe puis cliquez sur Sign In

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Precirct pour votre premier projet Unity )

03 shy Creacuteation drsquoun projet

1 Lancez Unity3D 2 Cliquez sur ldquoNewrdquo comme cishydessous

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

3) Suivez les eacutetapes

04 shy La deacutecoupe de lenvironnement de travail

1 Voici une vue drsquoensemble de lrsquoeacutediteur 3D drsquoUnity lors de la creacuteation drsquoun tout nouveau projet

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Cet ensemble peut ecirctre deacutecoupeacute en plusieurs blocs distincts ayant leurs speacutecificiteacutes propres

a Le bloc projet

Pour le moment il est vide il se remplira tout au long de ce tutoriel Crsquoest agrave cet

endroit que vous trouverez lrsquoensemble des fichiers enregistreacutes sur votre ordinateur correspondant agrave votre jeu Vous pouvez retrouver ces fichiers agrave lrsquoendroit ougrave vous avez choisi drsquoenregistrer votre projet b) Le bloc scegravene

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

La scegravene correspond agrave votre plan de travail crsquoest lagrave que vous allez interagir avec les eacuteleacutements de votre jeu Par deacutefaut il y a deacutejagrave deux objets placeacutes dans votre scegravene Une cameacutera et une lumiegravere Nous reviendrons plus en deacutetail sur ces deux eacuteleacutements dans la partie ldquoComponentsrdquo de ce tuto Comme vous pouvez le voir dans le coin en haut agrave droite de votre scegravene Unity3D utilise un repegravere x y z avec lrsquoaxe y agrave la verticale c) Le bloc ldquoHierarchyrdquo Nous avons pu constater la preacutesence de deux eacuteleacutements ajouteacutes par deacutefaut agrave notre scegravene (la cameacutera et la lumiegravere) que nous pouvons retrouver dans ce bloc Ce bloc liste lrsquoensemble des eacuteleacutement preacutesents sur votre scegravene pour srsquoy retrouver plus facilement par la suite Il est donc important drsquoavoir une hieacuterarchie bien organiseacutee pour pouvoir retrouver un eacuteleacutement preacutecis parmi les nombreux qui composeront votre scegravene (il nrsquoest pas rare drsquoen avoir plus drsquoune centaine )

d) Le bloc ldquoInspectorrdquo

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Si vous observez bien les deux images preacuteceacutedentes vous constaterez que dans la scegravene tout comme dans la hieacuterarchie ma cameacutera est seacutelectionneacutee Lrsquoinspecteur drsquoeacuteleacutements nous permet drsquoavoir plus drsquoinformation sur lrsquoobjet seacutelectionneacute Le Transform crsquoest un eacuteleacutement commun agrave tout ce que vous pouvez poser dans votre scegravene il donne des informations sur la position la rotation et le ldquoScalerdquo (les dimensions) de votre objet Vous avez des informations plus preacutecises sur le type de cameacutera que vous utilisez ainsi que le type drsquoaffichage Nous reviendrons plus en deacutetails en temps et en heure sur les diffeacuterents paramegravetres Ces trois eacuteleacutements indiquent que la cameacutera peut shy afficher les eacuteleacutements de ldquolrsquointerface utilisateurrdquo ou UI Plus drsquoinformation dans la documentation Unity (en anglais) shy simuler des effets de lumiegravere Documentation unity agrave ce propos shy geacuterer du son Documentation unity agrave ce propos

Nous reviendrons plus en deacutetail sur le fonctionnement des ldquoComponentsrdquo car ils sont tregraves nombreux Nous avons maintenant vu les eacuteleacutements de base de lrsquoenvironnement drsquoUnity3D Il est tregraves complet et nous verrons au fur et agrave mesure les diffeacuterentes options Un petit aperccedilu des autres eacuteleacutements (la plupart eacutetant non afficheacutes par deacutefaut)

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Avant de quitter cette preacutesentation de lrsquointerface je vous invite agrave cliquer sur le bouton ldquoPlayrdquo

Vous devriez avoir un changement drsquoaffichage au moment ougrave vous appuyez sur le bouton

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Le fond est plus sombre et nous ne voyons plus la scegravene mais le ldquoGamerdquo crsquoest le rendu de votre jeu vu par votre cameacutera Vous pouvez toujours bouger les eacuteleacutements dans votre scegravene a la main ou manipuler les paramegravetres dans lrsquoinspecteur drsquoeacuteleacutements mais aucun des changements ne sera sauvegardeacute lorsque vous quitterez le mode ldquoPlayrdquo

05 shy Organisation simple des dossiers du projet

Nous allons rajouter quelques dossiers afin de faciliter lrsquoorganisation de notre projet On va faire nos manipulations dans le bloc ldquoprojetrdquo

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Nous verrons au fil des diffeacuterents tutoriels agrave quoi servent tous ces dossiers Creacuteez les dossiers suivants

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 shy Plante le deacutecor

Objectif Pour construire un super jeu il faut le faire par eacutetapes La premiegravere crsquoest de creacuteer les diffeacuterents eacuteleacutements que tu veux mettre agrave lrsquointeacuterieur de ton jeu Dans ce tutoriel on va se concentrer sur le deacutecor A la fin du tutoriel on aura un super environnement pour y accueillir tous nos personnages )

Ce que tu vas apprendre

Creacuteer un terrain Ajouter une Skybox Deacutecouvrir les game objects Importer des graphismes de lrsquoasset store

Meacutethodologie

Pour creacuteer un beau deacutecor tu vas commencer par modeacuteliser ton terrain Tu vas deacutecouvrir ce que sont les GameObjects et les Preacutefabs dans [Tuto GameObject et Prefabs] Si tu deacutesires utiliser des ressources produites par des designers va jeter un coup drsquooeil au [Tuto Asset Store] Ensuite tu vas apprendre agrave donner de la matiegravere agrave tes GameObject agrave travers des [Tuto Textures et Materials] Tu auras ainsi tous les eacuteleacutements pour creacuteer ton terrain en suivant le tutoriel [Tuto Terrains] Enfin tu vas vouloir entourer ton monde avec une [Tuto Skybox]

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

11 shy Les gameObjects et les Prefabs

Unity3D nrsquoest pas un logiciel de modeacutelisation 3D ni de dessin mais il existe quelques objets simples que lrsquoon peut creacuteer depuis lrsquoeacutediteur Pour les formes plus complexes il faudra passer par des logiciels plus speacutecifiques tel que Blender Maya ou 3Ds max Voyons quels eacuteleacutements sont agrave notre disposition En faisant un clic droit dans la hieacuterarchie vous trouverez ceci

Cliquez sur ldquoCuberdquo et observez ce qui ce passe sur votre eacutecran

Dans la hieacuterarchie une nouvelle ligne qui correspond agrave votre cube srsquoest rajouteacutee en doubleshycliquant dessus la scegravene va se focaliser sur votre cube

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Vous avez deacutesormais ceci

Essayez de faire bouger votre cube depuis votre scegravene en tirant sur les flegraveches de couleurs qursquoon appelle flegraveches gizmo

Maintenant essayez drsquoentrer directement des valeurs dans la partie position de lrsquoinspecteur Recentrez la scegravene sur le cube en doubleshycliquant dessus dans la hieacuterarchie Modifiez la rotation et le ldquoscalerdquo dans ldquoTransformrdquo pour comprendre comment agir depuis

lrsquoinspecteur sur un objet Petite astuce en haut agrave gauche au dessus de la hieacuterarchie vous trouverez ces boutons

Ces trois options changent les gizmos pour eacuteviter drsquoavoir agrave toucher les valeurs de lrsquoinspecteur Vous pouvez maintenant deacuteplacer tourner et redimensionner (ldquoscalerdquo en anglais) vos objets agrave la souris

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Nous allons maintenant creacuteer un tabouret Pour celagrave nous aurons besoin de 4 cubes suppleacutementaires Bougez les valeurs de ldquoscalerdquo et de position des cubes jusquagrave avoir un reacutesultat similaire

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Nous allons maintenant reacuteorganiser notre hieacuterarchie afin drsquoindiquer agrave Unity que le tabouret est un seul objet Pour cela nous allons creacuteer un ldquogameObjectrdquo vide Crsquoest un objet invisible sans consistance il nrsquoa donc qursquoun ldquotransformrdquo dans son inspecteur drsquoeacuteleacutement Il est cependant bien pratique car on peut grouper des objets et les attacher agrave notre ldquogameObjectrdquo on pourra donc bouger notre tabouret en bougeant uniquement le GameObject

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Creacuteer un ldquogameObjectrdquo vide (clic droit dans la hieacuterarchie)

2) Renommer en tabouret

3) En haut agrave droite du transform cliquez sur le petit rouage et seacutelectionner ldquoresetrdquo ce qui va positionner votre Tabouret en 000 et mettre la rotation agrave 000 puis le ldquoscalerdquo agrave 111

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

4) Seacutelectionner tous les cubes (clique sur le premier puis en maintenant la touche MAJ enfonceacutee sur le dernier)

5) Faire glisser tous les eacuteleacutements dans le tabouret (notre ldquogameObjectrdquo vide)

6) Renommer les cubes (ccedila permet de srsquoy retrouver plus facilement) Maintenant seacutelectionnez le tabouret et deacuteplacez le avec les gizmos ou lrsquoinspecteur tous les eacuteleacutements bougent ensemble Un peu de vocabulaire lrsquoobjet Tabouret est deacutesormais ldquoParentrdquo des ldquopiedsrdquo et du ldquodessusrdquo On dit dailleurs que ceuxshyci sont des ldquoEnfantsrdquo de Tabouret

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

nous allons creacuteer un Prefab Qursquoest ce que crsquoest et agrave quoi ccedila sert Et bien il srsquoagit drsquoun objet modegravele qui va ecirctre enregistreacute dans les fichiers du projet On va pouvoir en faire des copies (appeleacutees ldquoinstancesrdquo) de notre objet par exemple si on veut rajouter plusieurs tabourets dans notre piegravece Comment creacuteer un Prefab Il suffit de faire un glissershydeacuteposer depuis la hieacuterarchie de notre objet ldquotabouretrdquo vers le dossier ldquoPrefabsrdquo que nous avons creacuteeacute dans le tutoriel preacuteceacutedent

Votre tabouret est deacutesormais drsquoune couleur bleue dans la hieacuterarchie ainsi que tous ses eacuteleacutements Astuce Pensez agrave sauvegarder votre projet (Fichier gt Sauvegarder la scegravene ou Ctrl+S) reacuteguliegraverement pour eacuteviter de perdre vos modifications en cas de problegraveme (seacutelectionnez le dossier ldquoscenerdquo pour enregistrer votre progression) Par un glissershydeacuteposer ajoutez des tabourets dans votre scegravene depuis votre ldquoPrefabrdquo qui se trouve dans votre dossier de projet

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Important Les tabourets ici font tous la mecircme taille mais certains sont plus eacuteloigneacutes donnant lrsquoimpression qursquoils sont plus petits Vous pouvez utiliser lrsquoinspecteur pour modifier individuellement les instances si vous deacutesirez qursquoils aient une taille diffeacuterente Vous pouvez aussi modifier directement le ldquoPrefabrdquo pour modifier toutes les instances du tabouret

Si tu veux plus drsquoinformations sur les objets 3D de base tu peux aller sur le manuel (attention il est en anglais )

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Si notre projet contient trop drsquoobjets on peut reacuteorganiser la hieacuterarchie en creacuteant un ldquogameObjectrdquo ldquoTous les tabouretsrdquo qui contient tous les tabourets On le creacutee et lrsquoutilise comme on a fait avec le tabouret et les 5 cubes

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

12 shy les terrains

PreacuteshyRequis Tutoriel sur les Textures amp Materials

Qursquoest ce qursquoun terrain

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Un terrain est tout simplement une surface que vous allez pouvoir modeler et texturer agrave votre guise pour obtenir votre univers 3D On peut faire eacutenormeacutement de choses avec lrsquooutil mais il faut respecter certaines restrictions

Un terrain est une surface plate que lrsquoon eacutetire =gt pas de grottes drsquoarche ou de ponts (on doit rajouter des modegraveles 3D pour ccedila)

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

On ne peut pas creuser en dehors de notre terrain si on veut un trou un crategravere ou une faille il faut commencer leacutedition du terrain par sureacutelever lrsquoensemble

La taille et leacutechelle du terrain doivent rester reacutealistes posez un cube sur le terrain et comparez sachant qursquoun cube fait 1 megravetre Comment creacuteeshytshyon un terrain Faites un clic droit dans la hieacuterarchie seacutelectionnez 3D Object puis Terrain

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Par deacutefaut un terrain est une tregraves grande surface blanche poseacutee sur la ldquocoucherdquo 0

Regardons dans lrsquoinspecteur les diffeacuterents paramegravetres de notre terrain

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Un Transform comme pour tout objet drsquounity Un composant Terrain avec les outils drsquoeacutedition Un Terrain Collider pour geacuterer les collisions avec les autres objets Regardons plus en deacutetail les outils drsquoeacutedition de terrain

1 Augmenter diminuer la hauteur du terrain

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Diffeacuterents pinceaux dont on peut modifier lrsquoopaciteacute et la taille Simple clic pour monter le terrain MAJ (ldquoshiftrdquo en anglais) +Clic pour le baisser 2 Leacutegaliseur

Dans le mode ldquoFlattenrdquo vous pouvez mettre lrsquoensemble de votre terrain au niveau voulu (le paramegravetre ldquoheightrdquo) Ici il vaut 375 donc les zones modifieacutees auront une hauteur de 375

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Si vous preacutevoyez de faire des trous failles crategraveres etc le mode ldquoflattenrdquo est tregraves pratique pour reacutehausser votre terrain avant drsquoy creuser 3 Ladoucisseur drsquoangles

Permet drsquoarrondir les angles dans la zone Utile si vous avez des objets tregraves rectangulaires (cubes rectangle hellip) dans votre projet

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

4 Les textures

Par deacutefaut il nrsquoy a pas de texture dans votre terrain il faudra donc les ajouter dans le projet La premiegravere texture que vous ajouterez recouvrira tout votre terrain et sera votre ldquotexture de baserdquo Les autres textures seront agrave peindre par dessus

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Comment rajouter des textures a mon projet Tout drsquoabord je vous conseille de (re)lire le [Tuto textures amp materials] Dans unity on peut importer (les rajouter) de nombreux ldquoPackage Un package peut contenir tous les types drsquoobjets de Unity On peut les teacuteleacutecharger en ligne pour cela lisez le [Tuto Asset Store] Il existe quelques ldquopackagesrdquo directement preacutesent dans Unity nous allons utiliser ici le package ldquoEnvironmentrdquo qui contient des terrains et tout ce qui touche agrave des deacutecors 3D Dans le projet clicshydroit Import Package Environment

Laissez charger

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Puis cliquez sur ldquoImportrdquo

Dans le dossier vous trouverez

des textures de base

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

des modegravele drsquoarbre de base ainsi que des herbes et plantes

des prefabs qui permettent drsquoavoir une eau reacutealiste

Une fois que ce package est importeacute il est temps de placer ces eacuteleacutements dans notre eacutediteur de terrain

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Puis

Cliquez sur Select dans la case Albedo puis choisissez la texture de votre Terrain

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Une fois que vous avez cliquez sur ldquoAddrdquo votre terrain sera recouvert par la premiegravere texture que vous avez choisi

A tout moment vous pouvez modifier la taille de la texture agrave appliquer sur votre terrain

Vous pouvez diminuer dans ldquoSizerdquo le x et le y pour avoir un meilleur rendu (texture moins floue)

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Vous pouvez rajouter drsquoautres Textures pour les peindre par dessus la texture de base

5 Les arbres

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Tout comme pour les textures vous devez drsquoabord ajouter des arbres via ldquoEdit Treesrdquo

Vous avez deacutesormais accegraves agrave plusieurs proprieacuteteacutes pour geacuterer les arbres

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Brush Size taille du pinceau Tree Density gegravere le nombre drsquoarbres

agrave faire apparaicirctre dans la zone peinte Tree Height vous pouvez eacutetirer les bord fleacutecheacutes pour augmenter lintervalle de taille

aleacuteatoire Lock Width to Height preacuteserve les ratios lors des changements de taille

Random Tree Rotation change la rotation des arbres de faccedilon aleacuteatoire

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Choisissez une zone

Peignez par dessus pour faire apparaicirctre votre forecirct 6Lrsquoherbe

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

On rajoute de lrsquoherbe en cliquant sur ldquoEdit Detailsrdquo comme pour les arbres et les textures

Il suffit de seacutelectionner une zone et de peindre par dessus comme les arbres

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

13 shy Textures et Materials

Une texture est une tout simplement une image utiliseacute par Unity de plusieurs maniegraveres

1 Changer la surface Lrsquoapplication la plus courante pour une texture on la colle sur chaque cocircteacute crsquoest ce qursquoon avait fait pour le terrain (qui nrsquoa qursquoun cocircteacute le dessus)

Comment appliquer une texture agrave un objet Choisissez une texture que vous avez importeacute soit depuis ldquolrsquoAsset Storerdquo soit depuis votre ordinateur (glissershydeacuteposer depuis lrsquoendroit ougrave votre texture est sauvegardeacutee jusqursquoau dossier ldquographicsrdquo de votre projet) Doubleshycliquez dans la hieacuterarchie sur lrsquoobjet de votre choix puis faites glisser votre texture sur lrsquoobjet dans votre scegravene

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Creacuteation de ldquonormal maprdquo et ldquoheight maprdquo

Qursquoest ce qursquoune ldquoNormal maprdquo et une ldquoHeigth maprdquo Ce sont des image presque identiques agrave la premiegravere mais dont les couleurs qui les composent servent agrave deacuteterminer le relief de la texture

Exemple

ma texture

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

ma ldquoNormal maprdquo

ma ldquoHeight maprdquo

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Mon rendu final Comment creacuteer une ldquoNormal maprdquo ou une ldquoHeight maprdquo agrave partir drsquoune image

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Le plus simple est drsquoutiliser un geacuteneacuterateur automatique de normal map tel que ldquoNormalshyMap onlinerdquo

Attention Sur certaines applications (comme ce site) ldquoHeight maprdquo srsquoappelle aussi ldquoDisplacementMaprdquo Comment appliquer une ldquoNormal maprdquo ou une ldquoHeight maprdquo a mon cube Dans lrsquoinspecteur vous pouvez voir que votre cube possegravede un composant appeleacute ldquoDefault materialrdquo

De base si vous nrsquoavez pas fait de glissershydeacuteposer de texture dessus toutes ses proprieacuteteacutes sont griseacutees Il va falloir creacuteer un nouveau ldquoMaterialrdquo Dans votre dossier ldquographicsrdquo faite un clic droit et creacuteez un nouveau ldquomaterialrdquo que vous allez nommer ldquomy first super cube materialrdquo et lrsquoattacher agrave votre cube en faisant un glissershydeacuteposer sur le cube

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Une fois creacuteeacute et attacheacute agrave votre cube seacutelectionnez le et rendez vous dans lrsquoinspecteur

Parmi tous les paramegravetres disponibles nous allons en utiliser que 3

ldquoAlbedordquo crsquoest la case correspondante agrave notre texture (comme vu dans le tuto texture) ldquoNormal Maprdquo Comme son nom lrsquoindique

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

ldquoHeigh Maprdquo Idem Pour placer vos images dans les diffeacuterentes cateacutegorie un simple glisser deacuteposer sur la case grise agrave gauche du nom de cateacutegorie suffit

shygt Astuce Il nrsquoest pas neacutecessaire drsquoavoir des graphismes tregraves pousseacutes on peut faire un jeu tregraves agreacuteable agrave jouer avec des textures et des modegraveles simples Quelques exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

14 shy La Skybox

Comment changer le ciel de mon jeu Nous avons teacuteleacutechargeacute une ldquoskyboxrdquo lors du tutoriel sur lrsquoAsset Store Nous allons maintenant la rajouter dans le jeu

1 Cliquez sur Window

2 Ouvrez Lighting

3 Cliquez sur le point agrave coteacute de lrsquoencadreacute Skybox (chercher un fichier dans le projet)

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

4 Parmi les diffeacuterentes textures et materials qui se trouve dans le projet cherchez les eacuteleacutement qui correspondent agrave votre skybox

Vous devriez avoir une scegravene comme suit

Si ce nrsquoest pas le cas et que vous avez quelque chose qui ressemble agrave ccedila

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Crsquoest que la ldquoskyboxrdquo utilise un vieux style de rendu non adapteacute a la version actuelle Pour corriger cela ouvrez le dossier de votre ldquoskyboxrdquo et trouvez la ldquoskyboxrdquo globale (pas les 6 images correspondant aux 6 faces) Puis dans lrsquoinspecteur cliquez sur ldquoFix Nowrdquo sur chacune des faces

Comment creacuteer sa propre skybox En effet vous serez peut ecirctre ameneacutes agrave creacuteer votre propre ldquoskyboxrdquo si vous nrsquoen trouvez pas une agrave votre goucirct sur ldquolrsquoAsset Storerdquo Dans unity une ldquoskyboxrdquo est simplement un cube dont les 6 faces sont recouvertes de textures agrave lrsquointeacuterieur (et non pas agrave lrsquoexteacuterieur comme crsquoest habituellement le cas)

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Comme crsquoest indiqueacute en dessous du nom de votre ldquoskyboxrdquo il srsquoagit drsquoun type de ldquoShaderrdquo

Commenccedilons par creacuteer un ldquoMaterialrdquo dans le projet (clic droit dans le dossier ldquographicsrdquo)

Ce qui dans ldquoProjectrdquo nous donne

Et dans ldquoInspectorrdquo en seacutelectionnant le material

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Dans shader nous allons seacutelectionner le bon type de shader puis il ne vous restera plus qursquoagrave remplir les diffeacuterentes faces Ce qui vous donne cela

Dans ldquoProjectrdquo

Et dans ldquoInspectorrdquo

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

15 shy Asset store

Lrsquoasset store drsquounity est un site de partage de fichiers unity Vous y trouverez des modegraveles 3D des effets de particules des textures des jeux des scripts hellip Tout ce qui est peut ecirctre utiliseacute dans un projet Unity Ils sont fournis sous forme de ldquoPackagerdquo crsquoest agrave dire un dossier contenant plusieurs fichiers (souvent dans des sousshydossiers qui indiquent leur type) Comment aller dans lrsquoasset store Vous pouvez soit

1 Aller directement sur le site drsquounity dans la rubrique ldquoAsset Storerdquo en suivant ce lien httpswwwassetstoreunity3dcomen

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

1 Le consulter depuis Unity3D Ouvrez la fenecirctre de lrsquoasset store depuis lrsquoonglet ldquoWindowrdquo dans la barre des tacircches en haut agrave

gauche

Choisissez le Layout ldquoTallrdquo qui facilite la lecture de la page

Comment se repeacuterer dans lrsquoAsset Store

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Une barre de recherche pour y mettre des mots clefs

Des annonces de top tendances

Un index de recherche

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Comment teacuteleacutecharger depuis lrsquoasset store

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Nous allons trouver une ldquoSkyboxrdquo (que nous utiliserons dans le [Tuto Skybox])crsquoest agrave dire une texture de ciel pour remplacer le ciel par deacutefaut un exemple

Dans lrsquoAsset Store cherchez le motshyclef ldquoSkyboxrdquo et cliquez sur ldquopricerdquo pour mettre en avant

les assets gratuits

Il est possible que certains (tregraves) vieux assets ne soient plus compatibles avec les reacutecentes version drsquoUnity si jamais vous avez des problegravemes pour utiliser un asset teacuteleacutechargeacute sur le store pensez agrave veacuterifier la version (et en prendre un autre plus reacutecent si besoin)

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Cliquez sur download

Il ne vous reste plus qursquoagrave importer les fichiers dans votre projet en cliquant sur ldquoImportrdquo

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

2 shy Construit tes personnages

Objectif

Maintenant que tu as un deacutecor geacutenial il faut lui donner vie On va voir comment rajouter

pleins de supers personnages dedans et leur ajouter une SpriteSheet pour creacuteer des

animations

Ce que tu vas apprendre

Creacuteer des personnages

Leur appliquer une texture

Creacuteer des personnages avec plusieurs images (pour des animations)

Meacutethodologie

Pour commencer on va recreacuteer des Prefab pour nos personnage relis donc le tutoriel [Tuto

GameObject et Prefab]

Tu voudras probablement reacutecupeacuterer des images drsquoautres personnes relis le [Tuto Asset

Store]

Tu auras ensuite besoin de leur appliquer une texture relis le [tutoriel TextureMaterials]

Enfin tu auras besoin de creacuteer une SpriteSheet (utiliseacutee pour creacuteer les animations de ton

personnage) lis le [tutoriel SpriteSheet]

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

21 shy Creacuteer une Sprite Sheet 2D

1 Dans un projet 2D

Dans un projet 2D il existe principalement deux maniegraveres drsquoanimer un objet La premiegravere est drsquoutiliser une ldquoSprite Sheetrdquo un document qui contient toutes les images deacutecrivant un mouvement Par exemple une ldquoSprite Sheetrdquo de personnage et une ldquoSprite Sheetrdquo de petits eacuteleacutements (goutte drsquoeau flamme coeur)

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Le principe est simple on va faire deacutefiler les images tout au long de lrsquoanimation Trouver des images sur Internet Tu peux teacuteleacutecharger nrsquoimporte quelle image que tu trouves sur Internet en faisant attention agrave

la licence prends uniquement des images sous licence CC (Creative Commons) et cite

lrsquoauteur ainsi que le nom de lrsquoimage dans les remerciements

Il existe de nombreux sites drsquoimages libres (des ldquobanques drsquoimagesrdquo) Par exemple

httpopengameartorgartshysearchshyadvancedkeys=ampfield_art_type_tid[]=9 (on peut aussi

trouver des sons sur ce site)

httpwwwgameart2dcomfreebieshtml

httpkenneynlassets

httpwwwdumbmanexcombynd_freestuffhtml

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

httpblogoscopedcomarchive2006shy08shy08shyn51html

etc

Souvent on teacuteleacutecharge des archives (zip) depuis ces sites Dans ces cas lagrave il faut les

ldquoextrairerdquo apregraves avoir teacuteleacutechargeacute une archive fais un clicshydroit dessus puis seacutelectionne

ldquoextraire toutrdquo

Jrsquoai une ldquoSprite Sheetrdquo comment je lrsquoapplique agrave mon personnage

En tout premier lieu il va vous falloir une animation ldquoIdlerdquo crsquoest lrsquoanimation qui sera joueacutee quand notre personnage ne fera aucune autre action

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Ensuite il nous faudra des action tel que ldquoJumprdquo pour sauter ldquoMoverdquo pour avancer etc Commencez par importer votre ldquoSprite Sheetrdquo dans Unity

Seacutelectionnez votre ldquoSprite Sheetrdquo et allez dans lrsquoinspecteur

Par deacutefaut votre ldquoTexture Typerdquo est agrave ldquoTexturerdquo et non agrave ldquoSprite (2D and UI)rdquo pensez agrave le changer Le ldquoSprite Moderdquo est par deacutefaut agrave ldquoSinglerdquo votre personnage nrsquoaura qursquoune seule image Il faut penser agrave changer ldquoSinglerdquo pour ldquoMultiplerdquo sur votre ldquoSprite Sheetrdquo sinon vous ne pourrez pas avoir drsquoanimations

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Cliquez sur

Maintenant que les preacuteparatifs sont termineacutes nous allons deacutecouper cette ldquoSprite Sheetrdquo

Cliquez sur

Vous voilagrave dans lrsquoeacutediteur de deacutecoupe drsquoUnity Nous allons seacutelectionner les diffeacuterentes zones correspondants agrave nos images pour isoler les morceaux de notre future animation

Pour deacutecouper une zone il suffit de cliquer sur le coin en haut a gauche de la partie agrave deacutecouper puis drsquoeacutetirer le rectangle jusqursquoau coin en bas a droite

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Avant de passer agrave la suite veacuterifiez ces points

Ma Sprite Sheet est deacutecoupeacutee en morceaux de mecircme taille et avec un point de pivot placeacute logiquement par rapport au dessin

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Pas de deacutecoupes qui se superposent Pas de deacutecoupes inutiles qui traicircnent

Quand tout est bon cliquez sur et crsquoest fait

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

3 shy Anime tes personnages

Objectif

Ton univers est maintenant peupleacute drsquoune multitude de personnages grands ou petits gentils ou meacutechant courageux peureux violet fluo ou vert pacircle hellip Il est maintenant venu lrsquoheure de leur donner vie avec des animations

Ce que tu vas apprendre

Creacuteer une animation Faire des transitions entre tes animations Deacutecider quand ces animations se deacuteclenchent

Meacutethodologie

Pour commencer regarde le [Tuto Animations] pour deacutecouvrir comment creacuteer une animation sur Unity Prends bien le temps de construire tes animations avant de passer agrave la suite Il est possible que les personnages que tu as pu teacuteleacutecharger sur lrsquoAsset Store possegravedent deacutejagrave leurs animations veacuterifie bien avant de te lancer dans la deacutemarche de faire les tiennes Quand tes animations sont formeacutees tu trouveras dans le [Tuto Animator] le moyen de creacuteer les liens de transitions entre elles Par exemple de lrsquoanimation de ton personnage qui marche tu peux passer agrave lrsquoanimation de ton personnage qui tombe ou agrave celle de ton personnage qui sautehellip Si tu as le courage de fouiller le deacuteclenchement de tes animations agrave partir du code C nous te conseillons drsquoaller lire le [Tuto Les Scripts] et [Tuto Les Inputs en C] Une fois que tu es agrave lrsquoaise avec ces aspects lagrave va voir le [Tuto Animations et C] pour deacutecider quelles actions de ton jeu vont deacuteclencher tes animations

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

31 shy Les Animations

PreacuteshyRequis Tutoriel sur les Sprite Sheet

Commenccedilons par arranger notre interface (il suffit de glissershydeacuteposer les eacuteleacutements)

Dans ldquoWindowrdquo ouvrez

Puis ouvrez

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Pour animer notre personnage nous allons proceacuteder en 3 eacutetapes

1 la creacuteation des animations 2 la gestion des transitions entre les animations 3 le deacuteclenchement par code des animations

Comment creacuteer mon animation Tout drsquoabord commenccedilons par creacuteer un nouveau ldquoGameObjectrdquo vide

Ajoutons lui un sprite de base (une image) On va prendre la premiegravere image de notre SpriteSheet qursquoon a creacuteeacute avant

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Commenccedilons par creacuteer la plus simple des animations dans le cas preacutesent Idle (ou quand le perso bouge pas) En ayant le deacutebut de personnage seacutelectionneacute cliquez dans ldquoAnimationrdquo sur

Enregistrez sous le nom Perso_Idle_Anim dans le dossier Animation de votre projet Sur la ldquotime linerdquo(frise du temps) qui srsquoaffiche vous allez disposer les sprites dans lrsquoordre dans lequel vous voulez qursquoils srsquoaffichent

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Ici on veut que notre personnage ne bouge pas On va donc lui mettre une seule image celle de sa pose Idle (player_0 pour moi)

Ce qui donne ceci

Pour les autres animations le deacutebut est le mecircme on ne changera que le nombre lrsquoordre et le temps entre les diffeacuterentes images de lrsquoanimation Pour creacuteer une nouvelle animation

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Par exemple lrsquoanimation de mort

Voici la liste des animation pour ce personnage

Ne rien faire (ldquoidlerdquo) Marche (ldquowalkrdquo) Saut (ldquojumprdquo) Tomber (ldquofallrdquo) Lever le bouclier (ldquoshieldrdquo) Marcher en levant le bouclier (ldquowalk_shieldrdquo) Attaque (ldquoattackrdquo) Mort (ldquodeathrdquo)

Si vous ecirctes en 3D et que vous ne voulez pas changer de texture Vous nrsquoecirctes pas obligeacutes de changer de texture agrave chaque eacutetape de lrsquoanimation il est aussi possible de simplement changer la position ou la taille Par exemple si je veux bouger cette plateforme au dessus de la riviegravere de lave

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Commenccedilons par creacuteer une animation

1 On veacuterifie dans le bloc animation que le point rouge est allumeacute (ce qui veut dire que tout ce que lrsquoon fait sera enregistreacute )

2 On colle la plateforme contre le bord cela agrave pour effet de creacuteer une premiegravere ldquokey framerdquo de position Crsquoest la premiegravere position de notre plateforme

3 On positionne la barre rouge un peu plus loin dans la ldquoTimeshyLinerdquo de lrsquoanimation

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

4 On deacuteplace la plateforme jusqursquoagrave lrsquoautre rive pour creacuteer notre deuxiegraveme ldquokeyshyframerdquo de position

5 On deacutecale une derniegravere fois la barre rouge drsquoune distance eacutegale agrave celle de lrsquoeacutetape preacuteceacutedente (sinon notre plateforme passera plus de temps agrave revenir de la position drsquoarriveacutee agrave la position de deacutepart que de temps agrave aller du deacutepart agrave lrsquoarriveacutee) puis on fait revenir la plateforme agrave lexacte position qursquoelle avait au deacutepart Pour cela cliquez sur la premiegravere ldquokeyshyframerdquo notez les coordonneacutees dans le Transform de la plateforme puis revenez sur votre derniegravere position et remplacez les valeurs par celles que vous venez de noter

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Quand vous avez vos 3 positions

la premiegravere correspondant au ldquoPoint de deacutepartrdquo

la seconde correspondant au ldquopoint drsquoarriveacuteerdquo la derniegravere correspondant au

ldquoPoint de deacutepartrdquo

Vous pouvez quitter le mode

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

animation en cliquant sur le point

rouge

Appuyez sur PLAY pour voir votre animation

Mon animation est beaucoup trop rapide

La ldquotimeshylinerdquo par deacutefaut eacutetant de 1 seconde (60 frames) votre animation peut ecirctre trop rapide pour le rendu que vous souhaitiez Sur la ldquoTimeshylinerdquo en maintenant ctrl et en manipulant la molette vous pouvez zoomer ou deacutezoomer pour acceacuteleacuterer ralentir votre animation Vous pouvez ensuite deacuteplacer vos ldquokeyshyframesrdquo pour modifier le temps de votre animation AVANT 1 seconde drsquoanimation

APRES 4 secondes drsquoanimation

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

32 shy Les Animator

PreacuteshyRequis Tutoriel Animations Comment je gegravere les transitions entre mes Animations On va utiliser ldquolrsquoAnimatorrdquo dont voici lrsquointerface avec le scheacutema des diffeacuterentes animations

La premiegravere animation que vous avez creacuteeacute (ldquoIdlerdquo) sera relieacutee au block vert ldquoEntryrdquo par une flegraveche orange crsquoest la premiegravere animation qui sera joueacutee lors de lrsquoapparition de notre Player Pour ce qui est des autres animations elles ne sont pas (encore) relieacutees entre elles Chaque flegraveche correspond agrave une transition Par exemple depuis Idle on peut passer agrave Walk Jump Fall Death Mais on ne peut pas passer de Jump agrave Idle (il faut drsquoabord passer par ldquoFallrdquo quand on saute) Pour creacuteer un lien entre deux animations effectuez un clic droit sur lrsquoorigine puis cliquez sur lrsquoarriveacutee

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Si on veut changer le ldquoDefault Staterdquo lrsquoanimation par deacutefaut qui sera joueacute au deacutebut du personnage (relieacutee par la flegraveche orange) il suffit de faire clic droit gt ldquoSet as Layer Default Staterdquo Il faut maintenant ajouter un peu de logique car sinon il est impossible drsquoutiliser nos transitions (et donc de changer drsquoanimation) Cliquez sur la flegraveche de transition

Dans lrsquoinspecteur les deacutetails de cette transition vont srsquoafficher

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Premier paramegravetre ldquoHas Exit Timerdquo permet de choisir si la transition peut se faire agrave nrsquoimporte quel moment (tant que le deacuteclencheur est activeacute) ou si la transition ne peut se faire qursquoagrave la fin de lrsquoanimation preacuteceacutedente Je deacutecide de le deacutecocher car mes transition de saut de chute et de course ne doivent pas

bloquer la fluiditeacute du gameplay de mon jeu

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

En deacutecochant ce paramegravetre vous verrez un petit message drsquoalerte plus bas

En effet notre transition nrsquoa plus aucune condition pour seffectuer Pour le moment on ne lui a pas attribueacute deacutevegravenements et on vient de lui retirer ldquoHas exit timerdquo Nous allons donc rajouter des paramegravetres (qui nous permettrons de deacuteclencher nos animations)

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Ces paramegravetres seront modifieacutes par votre code Par exemple vous pouvez ajouter un booleacuteen (type de variable prenant pour valeur uniquement vrai ou faux) pour demander si vous ecirctes en train drsquoavancer ou bien ajouter un Float pour veacuterifier si votre mouvement (souvent appeleacute veacutelociteacute) sur lrsquoaxe Y est positif (je saute) ou neacutegatif (je tombe) Creacuteez par exemple un booleacuteen ldquoisJumpingrdquo qui prendra ldquotruerdquo si on saute et ldquofalserdquo si on saute pas Retournons sur la flegraveche transitionnelle entre ldquoIdlerdquo et ldquoJumprdquo

Nous pouvons deacutesormais rajouter une condition dexeacutecution

Bien eacutevidement la condition naturelle pour cette action est

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Certaines transitions demanderont plus de conditions et de paramegravetres que celle ci Par exemple si je me protegravege avec mon bouclier et que je deacutecide de taper en mecircme temps si jrsquoai une animation qui correspond a cette action je vais devoir la deacuteclencher uniquement si les deux conditions (se proteacuteger et attaquer) sont veacuterifieacutees en mecircme temps

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

32 shy Les scripts dans unity

Jusqursquoagrave maintenant nous avons utiliseacute lrsquoeacutediteur graphique drsquoUnity Mecircme si celuishyci est tregraves puissant il a ses limites et nous allons donc voir comment creacuteer des scripts indispensable dans nrsquoimporte quel projet Quel langage est utiliseacute dans unity

En faisant un clic droit dans votre projet et en seacutelectionnant ldquoCreaterdquo vous aurez la

possibiliteacute de choisir entre deux langages

Le plus commun et le plus documenteacute sur internet est le C Nous allons donc nous concentrer exclusivement sur ce langage lors de ce tutoriel Note on prononce ldquoCrdquo ldquoCshysharprdquo et non ldquoCshydiegraveserdquo ne soyez pas eacutetonneacutes si vous lrsquoentendez dans une videacuteo Agrave quoi sert un script

Un script permet de donner des instructions preacutecise agrave un objet en utilisant plusieurs paramegravetres Par exemple un script pour les deacuteplacements du personnage ou un script pour deacuteplacer la cameacutera en fonction des deacuteplacements du joueur

Quelques regravegles importantes

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Il est important drsquoorganiser un minimum nos scripts car on peut facilement srsquoy perdre (essayez de retrouver une feuille dans une boicircte remplie de feuilles hellip) On va donc seacuteparer les scripts et creacuteer un script par objet de notre code On aura donc un script pour le joueur un script pour le bonus (une piegravece par exemple) un script pour chaque type drsquoennemi

Agrave lrsquointeacuterieur mecircme de nos scripts il est important de rester clair pour cela quelques regravegles de base

Les noms de variables doivent ecirctre clairs Pas de ldquoardquo ldquobrdquo et ldquocrdquo mais plutocirct ldquopointsDeVierdquo ldquoattaquerdquo ldquomaCamerardquo hellip

Rajoutez des commentaires Ils seront tregraves importants quand vous relirez votre code

Sautez reacuteguliegraverement des lignes pour ldquoaeacutererrdquo votre code Deacutemarrage sur Unity Il est possible drsquoutiliser beaucoup drsquoeacutediteurs diffeacuterents avec Unity Nous allons utiliser ldquoMonoDeveloprdquo (un eacutediteur preacutesent avec Unity)rdquo Allez dans

Et choisissez MonoDevelop comme ldquoExternal Script Editorrdquo

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Creacuteez votre premier script C intituleacute ldquoTestrdquo (clic droit dans la partie project et ldquocreate C scriptrdquo) (On met toujours une majuscule au nom des scripts) Ouvrez le par un doubleshyclic

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Expliquons dans lrsquoordre les diffeacuterents eacuteleacutements preacutesent dans le fichier de base Lignes 1 et 2 Permet drsquoimporter des ldquopackagesrdquo de code un peu comme les ldquopackagesrdquo drsquoassets il y en a certains preacutesents dans Unity par deacutefaut et on peut en reacutecupeacuterer sur Internet si besoin Ligne 4 Il faut remettre ici le nom du fichier (toujours avec une majuscule donc Test) la syntaxe (maniegravere drsquoeacutecrire les choses) est importante agrave respecter sinon Unity ne comprendra pas

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Ligne 6 et 11 ce sont des commentaires mettre un dans une ligne permet agrave Unity drsquoignorer ce qursquoil y a apregraves Crsquoest tregraves pratique pour indiquer agrave quoi sert telle ligne ou bout de code Ligne 7 il srsquoagit de la fonction Start elle est tregraves utile car crsquoest ici qursquoon initialise les valeurs de nos variables Ligne 12 une autre fonction tregraves utile la fonction Update Elle est appeleacutee une fois par image(ldquoframerdquo en anglais) Crsquoest lagrave que se passera la majoriteacute de notre code (les eacutevegravenements qui se passeront en boucle comme les deacuteplacements) Les variables Avant de rentrer vraiment dans le code il est important de comprendre ce que crsquoest qursquoune variable Une variable est une boicircte qui peut contenir une valeur La valeur peut ecirctre un nombre entier(54) un nombre agrave virgule (1234) un booleacuteen (valeur vrai ou faux) un texte (ldquocoucourdquo) ou encore des objets Unity (un gameObject par exemple) Comme on peut le constater chaque variable a aussi un type ce que la boicircte contient En C il est indispensable de preacuteciser le type drsquoune variable avant de lrsquoutiliser et on ne peut pas changer son type si la variable ldquopointDeVierdquo est un nombre entier et contient 50 elle ne peut pas devenir du texte et contenir ldquocoucourdquo Il existe de nombreux types de variables et nous nrsquoallons pas tout utiliser Regardons drsquoabord comment utiliser les types dit ldquode baserdquo (qursquoon peut retrouver dans agrave peu pregraves tous les langages de programmation) Important On met toujours une minuscule au deacutebut des nom de variables et une majuscule pour seacuteparer les mots qui la composent

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Nous avons aussi des types propres agrave Unity Tous les composants drsquoun objet qursquoon peut trouver dans lrsquoinspecteur ont un type en C

Deacuteclaration

Initialisation

Les fonctions

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

On utilise des fonctions pour interagir avec Unity que ccedila soit pour lui donner des informations (changer lrsquoanimation drsquoun personnage) ou pour en reacutecupeacuterer (savoir si lrsquoutilisateur a appuyeacute sur la touche droite par exemple) Start() et Update() qursquoon a vu un peu plus tocirct sont aussi des fonctions de maniegravere geacuteneacuterale une fonction crsquoest juste plusieurs lignes de code

Une fonction peut eacuteventuellement renvoyer une valeur crsquoest le cas quand on demande agrave Unity si lrsquoutilisateur a appuyeacute sur la touche droite Certaines fonctions nrsquoen renvoient pas par exemple changer lrsquoanimation drsquoun personnage Cette valeur est comme une variable et elle a donc un type

Une fonction prend (quasiment) tout le temps des arguments Les arguments sont des variables qursquoon va donner agrave la fonction pour qursquoelle puisse fonctionner Par exemple agrave une fonction ldquobougerrdquo on va lui donner le nombre de pas dont on doit avancer

Un exemple drsquoutilisation de fonction avec et sans retour de valeur

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

34 shy Inputs C

PreacuteshyRequis Tutoriel sur les Scripts

On va geacuterer comment interagir avec lrsquoutilisateur crsquoest agrave dire savoir si le joueur a appuyeacute sur une touche de son clavier ou lrsquoeacutecran tactile drsquoune tablette ou deacuteplaceacute la souris On va proceacuteder de la mecircme maniegravere pour tout on va utiliser des fonctions qui vont nous renvoyer un booleacuteen vrai si lrsquoutilisateur est en train drsquointeragir avec nous drsquoune certaine maniegravere On va tester directement le reacutesultat avec un ldquoifrdquo (si en anglais) Le clavier On a ici trois fonctions qui prennent toutes un paramegravetre la touche qursquoon veut tester Les plus utiliseacutees sont Space (touche espace) Enter (entreacutee) AshyZ (touches des lettres) RightArrowLeftArrowDownArrowUpArrow (flegraveche droite shy gauche shy bas shy haut) Tu peux trouver une liste complegravete des touches en anglais ici

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

La souris Cela fonctionne sensiblement de la mecircme maniegravere et on a les mecircmes fonctions Elles prennent un paramegravetre le bouton de la souris qursquoon veut tester 0 correspond au bouton gauche 1 au bouton droit 2 agrave la molette

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Lrsquoeacutecran tactile (tablette ordinateur) Cette fois ci cela fonctionne un peu diffeacuteremment vu qursquoon peut avoir plusieurs ldquotouchrdquo simultaneacutes (si on appuie avec 2 doigts agrave un endroit diffeacuterent) Unity nous renvoie une liste de touch Pour acceacuteder agrave chaque touch individuellement on va utiliser une syntaxe un peu diffeacuterente avec un foreach

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

On utilise une meacutethode un peu diffeacuterente au lieu drsquoappeler une fonction pour savoir si on appuie (ou pas) on va tester si la ldquophaserdquo (lrsquoeacutetat) du ldquotouchrdquo est eacutegale agrave soit

Les axes Les axes nous permettent de savoir ougrave se trouve la souris dans la fenecirctre La fonction GetAxis prend le nom en paramegravetre et renvoie un nombre (agrave virgules) entre shy1 et 1 Il en existe 2

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

35 shy Les Animations avec du C

PreacuteshyRequis Tutoriels sur Animations Animator les Scripts

Je veux lancer lrsquoanimation de mon personnage quand je le fais marcher Lors du tuto ldquoAnimatorrdquo nous avons vu comment ajouter des paramegravetres (bool int float etchellip) pour deacuteclencher les animations selon certaines conditions Nous allons ici utiliser un paramegravetres de type bool enDeacuteplacement qui vaut vrai si on est en train drsquoappuyer sur la flegraveche droite OU gauche et faux si aucune nrsquoest appuyeacutee

Voyons comment en C je peux agir sur ces paramegravetres Pour celagrave il va nous falloir

une variable de type ldquoAnimatorrdquo pour acceacuteder au composant du mecircme nom un bout de code qui va tester si on appuie sur la touche flegraveche droite (comme on a vu dans

le tuto sur les Input) et change les valeurs du paramegravetre dans lrsquoAnimator

Ici on utilise deux nouvelles choses Le ldquo||rdquo crsquoest un ldquoOUrdquo Ainsi on mettra ldquoenDeacuteplacementrdquo agrave true si on appuie sur la

touche droite OU sur la touche gauche Il existe aussi le ldquoampamprdquo pour le ET (veacuterifie que les deux conditions sont vraies)

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples

Le ldquoelserdquo le code qui suit dans les crochets srsquoexeacutecute uniquement si la condition du if nrsquoest pas veacuterifieacutee Ici le code srsquoexeacutecutera si on nrsquoappuie pas sur la touche gauche et qursquoon nrsquoappuie pas sur la touche droite

Dans lrsquoanimator il suffit de tester si ldquoEnDeacuteplacementrdquo vaut vrai

Pour chaque type de paramegravetre il existe un ldquoSethellip()rdquo En voilagrave trois exemples