Unity tutorial n°2 – Les GameObjects
Comme je vous disais dans mon tutoriel précédent (Débuter avec Unity 3D), les GameObjects sont un concept très important dans Unity.
Dans Unity, tout ce qui apparaît à l’écran lors de l’exécution de votre jeu est issu d’un GameObject : Les objets 3D, les sprites 2D, l’UI (Inteface Utilisateur), les lumières, les caméras, les scripts C#…
Reprenez le nouveau projet vide que nous avons créé précédemment.
Unity avait créé une scène par défaut nommé “SampleScene.unity” et ajouté juste 2 GameObjects : Une caméra (nommé Main Camera) et une lumière (nommée Directional Light).
Création d’un premier GameObject
Pour illustrer la notion de GameObject, nous allons créer la terre en 3D.
Pour commencer on va aller chercher une texture de la terre.
Dans Google Images, tapez “earth texture” et téléchargez la texture qui vous plait le plus.
Moi j’ai choisi la texture EARTH DAY MAP High Resolution 2K (2048×1024 pixels) sur ce site : https://www.solarsystemscope.com/textures (lien alternatif)
Pas la peine d’utiliser des texture 4K ou plus, nous sommes dans un jeu vidéo, il faut toujours trouver le meilleur compromis entre le poids et la qualité.
Dans Unity, on va créer un nouveau sous dossier “Textures” à la racine de “Assets” (Create / Folder).
Les assets sont tous les fichiers sources de votre jeu (modèles 3D, textures, sons, images…)
Depuis l’explorateur de fichiers de Windows, vous allez copier/coller votre texture de terre dans ce sous dossier “Textures” (Pour moi c’est dans E:\Unity\Samples\MyFirstGame\Assets\Textures)
Maintenant, allez dans le menu tout en haut, GameObject / 3D Object / Sphere.
Nous avons créé une sphère en 3D.
Les propriétés du GameObject sphère apparaissent dans la panneau de droite.
Notre GameObject se nomme “Sphere” et il est composé de 3 composants (Components).
Les composants sont des blocs que l’on peut librement ajouter ou retirer d’un GameObject.
Un GameObject est finalement un coquille vide (container) qui a toujours un composant fixe “Transform” pour définir sa position, sa rotation et sa taille dans l’espace.
Après on est libre de poser les composants que l’on veut.
Dans notre cas, il y a :
– Le composant “Sphere” qui créé l’objet 3D sphere
– Le composant “Mesh Renderer” qui permet le rendu de l’objet 3D
– Le composant “Sphere Collider” qui permet que l’objet 3D réagisse aux collisions
Customisation de notre GameObject
Nous allons commencer par renommer notre GameObject.
C’est important de bien nommer les choses sinon quand votre scène contiendra des dizaines de GameObjects, ça deviendra ingérable. Renommez “Sphere” en “Earth”.
Les collisions nous importent peu dans cet exemple donc nous allons retirer (supprimer) le composant “Sphere Collider”.
Nous allons maintenant créer un matériau (material) pour pouvoir assigner la texture à la sphère.
Vous aller créer un nouveau dossier à la racine d’Assets que vous allez nommer “Materials”. Double cliquez sur le dossier créé pour rentrer dedans.
Maintenant créez un nouveau matériau (Create / Material)
Vous allez nommer ce matériau “EarthMat”.
Sélectionnez ce matériau, ses propriétés s’affichent dans le panneau de droite.
Cliquez sur le petit point (ancrage) à côté d’Albedo.
Sélectionnez la texture de la terre (texture bitmap JPEG).
On va maintenant assigner le matériau “EarthMat” à notre sphère “Earth”.
Sélectionnez le GameObject “Earth” dans la panneau de gauche.
Cliquez sur le petit point d’ancrage à côté de Materials / Element 0.
Sélectionnez le matériau “EarthMat”.
Rendu de la scène
Voilà, note planète terre est texturée !
Double cliquez sur “Earth” dans le panneau de gauche (celui qui liste tous les GameObjects de la scène), vous recentrez ainsi la vue de l’éditeur sur la sphère.
Maintenant sélectionnez la caméra “Main Camera” dans le panneau de gauche.
En bas à droite de la vue 3D vous avez un aperçu de ce que va voir la caméra lors du runtime (lors de l’exécution du jeu).
La terre est un petit peu petite, 2 solutions…
– On peut agrandir l’objet sphère en changeant son niveau de scale (taille) dans le composant Transform du GameObject de la sphère.
– Ou alors, on peut demander à la caméra d’avoir une focale (field of view) plus longue.
Mettez 10 comme “Field of view”, “Solid Color” pour Clear Flags et mettez du noir pour Background. Pour avoir du noir pur, il faut que les composantes R, G, B soient toutes les 3 à 0. Mettez 0.08 comme position Y de la caméra afin de mieux cadrer la planète.
Voilà, notre scène est prête à être rendue !
Cliquez sur le petit bouton “Play” en haut au centre de l’éditeur de Unity.
Pour passez alors en vue “Game” qui vous permet de voir exactement à quoi ressemblera votre planète lors de la réelle exécution de votre jeu (lors du runtime).
Conclusion
Grace à l’éditeur de Unity, nous avons pu créer une planète, la texturer, paramétrer sa caméra sans écrire une seule ligne de code C# pour le moment !
Vous pouvez télécharger le projet complet ici…
Dans le prochain tutorial nous allons voir comment manipuler les GameObjects par code, ce qui va commencer à nous offrir des perspectives intéressantes !