Culture Geek

Je code, tu codes… vous codez ? #9

Je code, tu codes… vous codez ? #9

Astéroïdo-codés !

 

Bonjour à toutes et à tous, et bienvenue dans cette nouvelle série d’articles qui traitera – en long, large et autres travers – de la programmation, et puisque nous sommes sur Cleek, nous parlerons bien entendu ici de l’art geek dans toute sa splendeur : le jeu vidéo et les étapes nécessaires pour créer le vôtre de A à Z !

Non, non, ne fuyez pas tout de suite, rassurez-vous, le développement de logiciels n’est en aucun cas, contrairement à certaines idées reçues, une affaire d’intellos reclus et monomaniaques ! En effet, quelques cuillères à soupe de logique, une ou deux onces de patience ainsi que quelques grammes de curiosité sont les seuls ingrédients requis pour développer la base d’un jeu vidéo.

Continuons cette semaine l’habillage visuel de notre jeu. Place au background, c’est à dire les éléments purement décoratifs qui défileront en arrière-plan.

 

Un astéroïde en kit

 

Commencez par télécharger cette image contenant quatre astéroïdes :

 

asteroiCuboids

 

Comme lors du dernier tutoriel, nous allons copier cette image dans notre répertoire Sprites pour la décomposer en plusieurs parties. Choisissez « Multiple » pour le « Sprite Mode », puis utilisez l’outil d’édition de sprite en cliquant sur le bouton « Sprite Editor ». Une fois le sprite divisé, vous pourrez voir chacune des parties coupées dans le dossier Sprites comme sur l’illustration ci-dessous :

 

cleek_image_prog9_1

 

Maintenant que nous avons quatre images d’astéroïdes, nous allons créer les prefabs correspondants afin de les appeler dans un spawner dédié au background.

« Stoooopp ! ça va trop vite pour moi ! »

Pas de panique, même si cela peut paraître un peu compliqué au premier abord, nous avons déjà fait chacune des actions dans les précédents tutoriels !

Petit rappel pour vous rassurer :

  • les tirs du Nyan-Cat ou les vaisseaux ennemis sont des prefabs : des sprites auxquels nous avons ajouté des scripts pour gérer leur comportement.
  • le spawner est un simple script qui va déterminer quand apparaissent certains objets dans notre scène, et nous l’avons déjà fait pour les ennemis.

 

Nous sommes donc en terrain relativement connu, la seule différence étant que nous allons créer plusieurs prefabs différents afin de disposer d’un peu de variété. Cependant, tous les prefabs disposeront du même code.

Glissez l’image du premier caillou sur la Hierarchy. Nous avons notre rocher géant (quoiqu’un peu petit pour l’instant, mais nous allons y remédier) qui s’affiche sur notre Scene. Créons maintenant un premier script dans le dossier correspondant. Nous appellerons ce dernier « MoveAsteroids ». Ouvrez notre fidèle Monodevelop pour y copier le code suivant :

 

cleek_image_prog9_3

 

La seule ligne qui pourrait vous paraître étrange serait celle-ci :

 

this.gameObject.transform.localScale = new Vector3 (Scale, Scale, 1);

 

Ce qu’il faut comprendre ici, c’est que l’échelle d’un GameObject ne peut être modifiée en utilisant la commande « transform.Scale.x = valeur ». La librairie d’Unity propose une méthode, « localScale », qui fait office d’intermédiaire entre la propriété Scale du GameObject et vous, au moyen d’un objet Vector3.

Associez le script de MoveAsteroids au sprite que nous avons déposé dans la Hierarchy. Vous pouvez aussi lui ajouter le script « FreeObject » afin que les astéroïdes sortant de l’écran soient supprimés de la mémoire. Finissez par renommer votre GameObject en « Asteroide1Prefab ».

Nous n’avons plus qu’à glisser notre objet renommé dans le dossier Prefabs.

 

cleek_image_prog9_4

 

Pour faire les petits frères de notre premier prefab, rien de plus simple : il vous suffit de glisser le nouveau sprite dans le champ « sprite » du « Sprite Renderer » de notre GameObject créé, puis de modifier son nom avant de le déposer dans le dossier Prefabs.

Cette manipulation permet de copier les principales caractéristiques de notre premier prefab sans avoir à réattribuer les scripts : un gain de temps mineur dans notre cas, mais considérable si vous appliquez cette méthode à des GameObjects plus complexes !

 

cleek_image_prog9_5

 

Répétez donc l’opération jusqu’à disposer de quatre prefabs d’astéroïdes, puis supprimez le GameObject de la Hierarchy ; nous n’en avons plus besoin.

 

cleek_image_prog9_6

 

 

Pop !

 

cleek_image_prog9_7

 

Eh oui, du code, brutalement, comme ça. Vous avez signé, ne l’oubliez pas !

Vous pouvez recopiez tout cela dans un nouveau script : « SpawnerBackground ».

Pour expliquer le fonctionnement général du script, nous créons un tableau de GameObject, grâce aux « ». Dans ce tableau nous allons mettre nos quatre prefab d’astéroïdes. Ensuite, en fonction de la variable « delai », nous allons instancier un des astéroïdes en le choisissant aléatoirement dans le tableau pour le positionner à droite de l’écran.

Petite explication sur les tableaux : un tableau de variables est simplement une sorte de collection de plusieurs variables (ou objets) de la même nature (des int, des float, ou des GameObject par exemple) qui sont identifiés grâce à leur numéro dans ce tableau. Ce numéro est appelé couramment « index » (majeur, pouce… désolée). Le point primordial à retenir en ce qui concerne les index, c’est qu’ils commencent toujours à zéro. Le second objet d’un tableau sera à l’index 1, le troisième à l’index 2 et ainsi de suite.

Une fois que le script est copié et enregistré, nous pouvons l’associer à notre GameObject « Spawners ». Pour rendre notre spawner fonctionnel, il ne reste plus qu’à déposer les prefab d’astéroïdes dans les champs correspondants du script, comme sur l’illustration suivante :

 

cleek_image_prog9_8

 

Sauvegardez, testez ! C’est tout pour aujourd’hui, mais vous pouvez aussi modifier les différentes variables pour ajuster le tout comme il vous convient le plus : le délai peut être réduit, mais aussi la vitesse ou l’échelle des astéroïdes… N’hésitez pas à bidouiller, ou à essayer des valeurs différentes ! 

 

 

Culture Geek
Plus Culture Geek