Programmation: collision & score

Unity utilise un langage de programmation orienté objet proche du java utilisé par exemple dans l'environnement Processing, il s'agit du C#, prononcé C sharp. Unity possède son propre environnement intégré, MonoDevelop. Sous Windows, il arrive qu'il entre en conflit avec Visual Studio, pour activer MonoDevelop par défaut aller dans Edit > Preferences > External Tools > External Script Editor > MonDevelop (built-in).

Capsules

Dans notre environnement 3D nous allons disposer diverses capsules. Ces éléments constitueront des unités à ramasser pour augmenter notre score.

Disposez une Capsule sur le terrain.

GameObject > 3D Object > Capsule

Si vous testez votre jeux, vous remarquerez que lorsque vous entrez en collision avec la Capsule, votre joueur s'arrête, il s'agit d'un obstacle. Vous pouvez renommer votre objet en le sélectionnant dans Hierarchy et en tapant F2 ou dans l'Inspector. Cet objet est un Prefab, Nous allons le renommer “Orbe” pour éviter toute confusion.

Fabriquez un Prefab avec votre Orbe en glissant votre objet vers Project.

Pour permettre d'entrer en collision avec l'objet, le traverser et l'activer, cochez la case Is Trigger dans l'Inspector.

Inspector > Capsule Collider > Is Trigger

Désormais, si vous testez votre jeux, vous remarquerez que lorsque vous entrez en collision avec la Capsule, vous la traversez.

Script collision

Créez un script “Collision” afin de coder le comportement de votre objet.

Assets > RB > Create > C# Script

Double cliquez sur votre Script, il s'ouvre dans MonoDevelop, supprimez les fonctions Start et Update.

using UnityEngine;
using System.Collections;
public class Collision : MonoBehaviour {
// variable nombre entier
public static int nbOrbes = 0;
// fonction détection collision
void OnTriggerEnter(Collider obj){
// condition
if (obj.gameObject.name == "Orbe")
{
// évènements
nbOrbes += 1;
Destroy (obj.gameObject);
}
}
}

Par un simple drag & drop, glissez votre script sur le First Person Controller.

Score

Nous allons afficher à l'écran à l'aide d'un texte 3D accroché à la caméra le nombre d'orbes touchées. Dans Hierarchy, supprimez la Main Camera pour ne conserver que la Main Camera du First Person Controller, puis créez le 3D Text.

GameObject > 3D Object > 3D Text

L'objet 3D Text s'affiche à l'écran, renommez-le (F2 ou Inspector) “Score” par exemple. Glissez-le dans la Main Camera de l'objet First Person Controller afin qu'il soit “enfant” de celle-ci. Modifiez sa position dans la fenêtre preview et modifiez ses attributs dans l'Inspector.

OrbeScript

Nous allons rédiger un script “OrbeScript” affichant le nombre d'orbes du joueur.

using UnityEngine;
using System.Collections;
public class OrbeScript : MonoBehaviour {
public TextMesh texte;
// Update is called once per frame
void Update () {
texte.text = Collision.nbOrbes + " orbes";
}
}

Enregistrez le script et glissez sur votre objet texte, Texte3D

Glissez Texte3D dans la variable texte du script dans l'Inspector

Placez plusieurs Orbes sur le terrain en glissant votre Prefab Orbe directement sur la Scène. Testez le jeu,à mesure que vous entrez en collision avec les Orbes, le score s'incrémente.

Retour au sommaire
Changement de niveau