Understanding the First Person Controller

Page 1 sur 34Lecteur de document UniversityLib

Understanding the First Person Controller

Programming, Game Development, Image Processing · course

Voir tous les documents en programmation

Mohamed Amine MEZGHICH Ingénieur ENSI Doctorant en traitement d’image, Lab. CRISTAL,ENSI E-mail:[email protected]

Cycle Ingénieur

Année universitaire 2012-2013

1

(cid:1) Ce chapitre sera divisé en deux sections:

(cid:1) Partie A : dans laquelle nous allons étudier en détail le

personnage jouable First Person Controlller

(cid:1) Partie B: dédiée au scripting, à travers cette section nous allons apprendre à écrire nos propre scripts( en javascript) qui vont nous servir aux chapitres suivants (par exemple pour la gestion des collisions, score etc).

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

2

(cid:1) Commençons par regarder les objets qui constituent l’objet First Person Controller (FPC) avant de nous sur pencher font fonctionner.

composants qui

les

le

(cid:1) Dans le panneau Hierarchy, cliquez sur la flèche grise à (cid:1) Dans le panneau Hierarchy, cliquez sur la flèche grise à gauche de l’objet First Person Controller, afin d’afficher les objets qui y sont imbriqués. Lorsque les objets sont imbriqués de cette manière, il s’agit d’une relation parent-enfant.

Année universitaire 2012-2013

3

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

(cid:1) Dans cet exemple, l’objet First Person Controller est le parent, et les objets Graphics et Main Camera, ses enfants. Les objets enfants s’affichent en retrait dans le panneau Hierarchy afin de montrer leurs relations à panneau Hierarchy afin de montrer leurs relations à l’objet parent.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

(cid:1) Vous devez retenir

règles essentielles concernant les objets imbriqués ou les objets enfants.

certaines

Année universitaire 2012-2013

4

1. Les relations parent-enfant

(cid:1) Les valeurs de position et de rotation d’un objet enfant sont relatives à celles de ses parents. On parle alors de position locale et de rotation locale. Par exemple, si les coordonnées d’un objet sont (500, 35, 500), et que celles d’un de ses objets d’un objet sont (500, 35, 500), et que celles d’un de ses objets enfants sont (0, 0, 0), on remarque que celui-ci semble avoir la même position que son parent.

(cid:1) Il s’agit en effet de la position relative de l’objet enfant : en plaçant un objet enfant à (0, 0, 0), vous le positionnez aux coordonnées d’origine de son parent, autrement dit par rapport à la position du parent.

Année universitaire 2012-2013

5

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

1. Les relations parent-enfant(Suite)

(cid:1) Cliquez sur l’objet Graphics situé sous l’objet parent FPC dans le panneau Hierarchy. Comme vous pouvez le constater, l’objet FPC se trouve au centre de l’île et, pourtant, les valeurs l’objet FPC se trouve au centre de l’île et, pourtant, les valeurs du composant Transform de l’objet Graphics sont de (0, 0, 0).

(cid:1) En conséquence, chaque fois que l’objet parent est déplacé, ses enfants l’accompagnent, tout en conservant leur position et leur rotation locale selon la position et la rotation du parent dans le monde du jeu.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

6

2. Les objets de First Person Controller (cid:1) Cet objet se compose des trois éléments suivants :

(cid:1) 1. First Person Controller ou parent du groupe, sur lequel sont appliqués le script et le collider (composant de collision) principal pour contrôler son comportement. Le mouvement de cet objet est contrôlé par deux scripts : le premier permet de le déplacer à l’aide contrôlé par deux scripts : le premier permet de le déplacer à l’aide du clavier et le second de le faire pivoter en déplaçant la souris à du clavier et le second de le faire pivoter en déplaçant la souris à gauche et à droite.

(cid:1) 2. Graphics Tout simplement la forme primitive Capsule, qui vous permet en tant que développeur de voir où vous avez placé l’objet FPC.

(cid:1) 3. Main Camera Placé au niveau des yeux du joueur, cet objet fournit le point de vue. Des scripts lui sont appliqués afin que le joueur puisse regarder vers le haut et vers le bas.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

7

2. Les objets de First Person Controller (cid:1) En raison de la relation parent-enfant, lorsque l’objet FPC se déplace ou pivote, les objets Graphics et Main Camera suivent.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

8

(cid:1) 2.1. L’objet First Person Controller (parent) (cid:1) L’objet First Person Controller

toujours sélectionné dans le panneau Hierarchy, observez ses composants dans le panneau Inspector.

étant

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

9

Publicité

(cid:1) 2.1. L’objet First Person Controller (parent) (cid:1) L’objet FPC est formé de cinq composants :

(cid:1) Transform

(cid:1) Character Controller Character Controller

(cid:1) Character Motor(Script)

(cid:1) Mouse Look (Script),

(cid:1) FPSInput Controller(Script)

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

10

(cid:1) 2.1. L’objet First Person Controller (parent) (cid:1) Le composant Transform : Comme tous les objets de l’objet FPC possède un composant jeu actifs, Transform qui indique ses paramètres de position, de rotation et d’échelle et permet de les ajuster. rotation et d’échelle et permet de les ajuster.

(cid:1) Le composant Character Controller

: Cet objet agit comme un collider (un composant de collision qui donne à l’objet la capacité physique d’interagir avec d’autres objets) s’appliquer aux et mouvements du personnage et à leur contrôle dans le monde du jeu.

spécialement conçu pour

il est

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

11

(cid:1) 2.1. L’objet First Person Controller (parent) (cid:1) Le composant Character Controller

:Le composant Character Controller collider est représenté dans le panneau Scene par un contour vert en forme de capsule, de la même manière que les autres colliders dans capsule, de la même manière que les autres colliders dans Unity.

(Suite)

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

12

(cid:1) 2.1. L’objet First Person Controller (parent) (cid:1) Les composants Character Motor (Script) et FPSInput Controller (Script) : Ces deux scripts, écrits en JavaScript, permettent de contrôler le déplacement du personnage vers l’arrière et vers l’avant avec les touches directionnelles Haut et Bas (ou W et S), sur le côté à l’aide des touches et Bas (ou W et S), sur le côté à l’aide des touches directionnelles Gauche et Droite (ou A et D), et de le faire sauter en utilisant la touche de saut, qui est, par défaut, la barre d’espacement.

(cid:1) Le composant Mouse Look (Script) : Écrit en C#, ce script permet de faire pivoter le personnage lorsqu’on déplace la souris, en laissant les déplacements latéraux aux touches directionnelles Gauche et Droite.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

13

(cid:1) 2.2. L’objet Graphics(enfant) (cid:1) Comme ce personnage est, par nature, destiné à un jeu à la première personne, le joueur ne pourra jamais voir son propre corps.

(cid:1) La capsule qui le représente est simplement incluse dans cet La capsule qui le représente est simplement incluse dans cet élément préfabriqué pour aider le développeur à repérer élément préfabriqué pour aider le développeur à repérer facilement l’objet dans le panneau Scene lors du développement et des tests du jeu.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

(cid:1) Les développeurs désactivent souvent

le composant Mesh Renderer dans le panneau Inspector afin de s’assurer que le maillage de la capsule ne soit pas rendu et donc qu’elle soit bien invisible.

Année universitaire 2012-2013

14

(cid:1) 2.2. L’objet Graphics(enfant) (cid:1) Le composant Transform :

cet objet possède un composant Transform et que sa position est (0, 0, 0), car il se situe au centre de l’objet parent First Person Controller.

(cid:1) Cet objet ayant pour seul but d’offrir une représentation visuelle du joueur, il ne dispose que des deux composants nécessaires pour le rendre visible : (cid:1)Mesh Filter (cid:1) Mesh Renderer.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

15

(cid:1) 2.2. L’objet Graphics(enfant) (cid:1) Le composant Mesh Filter : Ce composant est tout simplement celui qui contient le maillage, autrement dit la forme 3D elle-même. Il permet au moteur de rendu de tracer une surface à partir de ce maillage. tracer une surface à partir de ce maillage.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

16

(cid:1) 2.2. L’objet Graphics(enfant) (cid:1) Le composant Mesh Renderer : Un composant Mesh Renderer doit être présent afin de créer les surfaces sur le maillage d’un objet 3D. Il gère également la réaction du maillage à la lumière et les matériaux utilisés sur la surface maillage à la lumière et les matériaux utilisés sur la surface pour afficher les couleurs ou les textures.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

17

(cid:1) 2.3. L’objet Main Camera(enfant)

(cid:1) L’objet Main Camera permet de visualiser le monde virtuel dans le jeu. Dans l’élément préfabriqué First Person Controller, il est positionné à la hauteur des yeux du il est positionné à la hauteur des yeux du Controller, personnage (en haut de la capsule Graphics).

(cid:1) Grâce à des scripts, le joueur peut déplacer tout l’objet parent mais aussi la caméra de façon indépendante pour regarder autour de lui tout en se déplaçant.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

Publicité

18

(cid:1) 2.3. L’objet Main Camera(enfant) (cid:1) En plus de l’élément Transform habituel, les objets de jeu caméra disposent habituellement de trois composants : Camera, GUILayer et FlareLayer ainsi que d’un clés composant Audio Listener pour capter des sons. composant Audio Listener pour capter des sons.

(cid:1) la caméra dispose également d’un composant de script unique appelé Mouse Look (Script), qui gère la rotation et l’inclinaison de la caméra en fonction de la position de la souris.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

19

(cid:1) 2.3. L’objet Main Camera(enfant) (cid:1) Le composant Camera : C’est l’élément principal de est généralement accompagné

visualisation, même s’il des composants GUILayer et Flare Layer.

(cid:1) Les composants GUILayer et Flare Layer : Ces deux (cid:1) Les composants GUILayer et Flare Layer : Ces deux composants ne possèdent aucun paramètre. Ils permettent simplement le rendu des éléments visuels additionnels. (cid:1)GUILayer permet le rendu des éléments 2D, comme les menus

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

et l’affichage tête haute (HUD).

(cid:1)FlareLayer permet à la caméra d’effectuer le rendu des effets de

lumière

Année universitaire 2012-2013

20

(cid:1) 2.3. L’objet Main Camera(enfant) (cid:1) Le composant Mouse Look (Script) : Il s’agit de la seconde occurrence du composant Mouse Look (Script) – la première se trouvant sur l’objet parent First Person Controller. Cette fois il gère le déplacement de la vue vers le Controller. Cette fois il gère le déplacement de la vue vers le haut ou vers le bas .

Combiné au script Mouse Look qui fait pivoter l’objet parent, il permet au joueur de tourner son regard où il le souhaite à l’aide de la souris, puisque l’objet Main Camera pivote également de gauche à droite lorsque l’objet parent tourne.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

21

(cid:1) 1. Le scripting (cid:1) L’écriture de script est un élément essentiel à maîtriser

pour devenir un développeur de jeux.

(cid:1) Même si Unity permet de créer des jeux sans avoir vraiment (cid:1) Même si Unity permet de créer des jeux sans avoir vraiment besoin de connaître le code source du moteur de jeu, vous devez cependant savoir écrire les scripts qui commandent le moteur de Unity.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

(cid:1) Ces scripts utilisent un ensemble de classes prêtes à comme des

l’emploi, que bibliothèques d’instructions ou de comportements.

vous pouvez

considérer

Année universitaire 2012-2013

22

(cid:1) 1. Le scripting (cid:1) Que vous rédigiez un nouveau script ou que vous utilisiez un script existant, celui-ci devient opérationnel seulement après que vous l’avez attaché à un objet de jeu dans la scène courante. Un script attaché à un objet de jeu en devient un composant et le comportement écrit dans le script le comportement écrit dans le script composant et s’applique à cet objet.

(cid:1) Cependant, les scripts ne se limitent pas à appeler un comportement de l’objet de jeu auquel ils appartiennent, ils peuvent également donner des instructions aux autres objets en faisant référence à leur nom ou à leur tag. Afin de mieux comprendre, voyons tout d’abord quelques principes de base des scripts.

Année universitaire 2012-2013

23

(cid:1) 2. Les commandes (cid:1) Les commandes sont des instructions données dans un

script.

(cid:1) Toutes les commandes en JavaScript doivent se terminer

par un point-virgule de la façon suivante :

vitesse = 5;

3. Les variables (cid:1) Les variables sont de simples conteneurs d’informations. Elles sont déclarées (créées) avec le mot var, suivi d’un ou de plusieurs mots sans espace entre eux. var vitesse = 9.0;

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

24

(cid:1) 4. Types de données des variables (cid:1) Lors de la déclaration des variables, vous devez aussi indiquer le type d’information qu’elles stockent en définissant le type de données. Voici la même déclaration de variable que l’exemple précédent, mais cette fois avec le type de données : (cid:1) var vitesse : float = 9.0; var vitesse : float = 9.0; (cid:1) Le nom de la variable est suivi de deux points pour préciser le type de

données.

(cid:1) Préciser le type de données de chaque variable que vous déclarez rend le script plus efficace car le moteur du jeu n’a pas besoin de décider par lui-même du type de la variable lors de sa lecture. (facilite la détection d’erreur).

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

25

(cid:1) 4. Types de données des variables Voici quelques uns des types de données les plus courants

que vous utiliserez :

(cid:2) string (chaîne de caractères). Combinaison de texte et de

chiffes stockés entre guillemets, "comme ceci".

(cid:2) int(entier). Abréviation d’integer. S’utilise pour les chiffres

entiers sans décimale.

(cid:2) float.Valeur numérique décimale. (cid:2) boolean(booléen). Une valeur vraie ou fausse utilisée

couramment comme condition à respecter.

Publicité

(cid:2) Vector3.Un ensemble de valeurs XYZ.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

26

(cid:1) 5. Variables publiques et variables privées Les variables déclarées à l’extérieur d’une fonction dans un script sont appelées variables globales ou propriétés. Par défaut, en JavaScript, de telles variables sont dites variables publiques, car elles s’affichent automatiquement en tant publiques, car elles s’affichent automatiquement en tant que paramètres du script (considéré alors comme un composant) dans le panneau Inspector. (voir l’exemple)

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

La valeur de chacune de ces variables peut donc être ajustée

dans le panneau Inspector.

Année universitaire 2012-2013

27

(cid:1) 5. Variables publiques et variables privées Si vous ne souhaitez pas régler la valeur d’une variable dans le panneau Inspector, vous devez alors utiliser le préfixe cacher la private pour qu’elle ne s’affiche pas. Pour variable JumpSpeed, par exemple, vous devriez modifier la variable JumpSpeed, par exemple, vous devriez modifier la déclaration de cette variable dans le script de la façon suivante :

var speed = 6.0; private var jumpSpeed = 8.0; var gravity = 20.0;

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

28

(cid:1) 6. Les fonctions Les fonctions sont des ensembles d’instructions qui peuvent être appelées à un moment précis lors de l’exécution du jeu. Un script peut contenir de nombreuses fonctions et chacune peut appeler une ou plusieurs autres fonctions au sein du même script. script.

Les scripts peuvent

faire appel à de nombreuses fonctions prédéfinies du moteur de Unity pour exécuter des commandes à des moments précis ou selon les actions de l’utilisateur.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Vous pouvez également écrire vos propres fonctions et les appeler lorsque vous avez besoin de réaliser des instructions spécifiques.

Année universitaire 2012-2013

29

(cid:1) 6. Les fonctions L’écriture d’une fonction commence par function suivi de son nom, puis d’accolades d’ouverture et de fermeture. Le développeur peut ensuite passer des paramètres supplémentaires entre ces accolades. Voici paramètres supplémentaires entre ces accolades. Voici quelques exemples de fonctions existantes.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

function Update(){ speed = 5; }

Année universitaire 2012-2013

30

(cid:1) 7. Les variables statiques et la syntaxe à point

À cette section, vous allez voir comment transmettre des informations entre plusieurs scripts à l’aide d’une variable statique, et comment traiter l’information de manière hiérarchique en utilisant la technique d’écriture de script hiérarchique en utilisant la technique d’écriture de script nommée syntaxe à point. nommée syntaxe à point.

Le nom des scripts écrits en JavaScript correspond au nom de la classe. Cela signifie que, pour vous adresser aux variables ou aux fonctions d’un autre script, vous pouvez faire référence à cette classe en utilisant le nom de ce script suivi du nom de la variable ou de la fonction en question à l’aide de la syntaxe à point.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

31

(cid:1) 7. Les variables statiques et la syntaxe à point

En termes de programmation, une variable statique peut être définie comme une valeur ou une commande commune à toutes les instances de ce script. De plus, si elle est toutes les instances de ce script. De plus, si elle est les publique, elle est accessible non seulement par fonctions ou les variables situées dans le même script mais aussi par n’importe quel script.

Pour déclarer une variable globale dans un fichier JavaScript de Unity, on utilise le préfixe static de la manière suivante :

static var speed : float = 9.0;

Année universitaire 2012-2013

32

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

(cid:1) 7. Les variables statiques et la syntaxe à point La syntaxe à point permet donc de désigner n’importe quel paramètre en indiquant le composant auquel il appartient.

Ainsi, pour régler la position verticale d’un objet de jeu, par exemple, vous devez modifier sa coordonnée Y. Vous devez donc vous adresser aux paramètres de position du composant Transform de cet objet. Pour cela, on écrit :

transform.position.y = 50;

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

33

(cid:1) 8. Les commentaires Dans beaucoup de scripts prédéfinis, vous remarquerez que certaines lignes commencent par deux barres obliques.

Il s’agit simplement des commentaires écrits par l’auteur

du script.

Nous vous conseillons d’écrire vos propres commentaires afin d’indiquer comment fonctionnent vos scripts, en particulier lorsque vous débutez.

i i

M M o o h h a a m m e e d d A A m m n n e e M M E E Z Z G G H H I I C C H H

Année universitaire 2012-2013

34