Magazine High tech

[Unity3d] Bien commencer avec Unity3d : déplacer un cube

Publié le 04 mars 2014 par Sébastien Cardona
Posté par : Seb - Le Mardi 4 Mars 2014 à 21:50

Bienvenue sur ce premier tutoriel Unity3D. L'objectif du jour est de prendre en main cet outil pour développer vos jeux.
Avant toute chose il vous faudra quelques bases en POO (Programmation Orientée Objet). Si ce n'est pas déjà le cas je vous invite à lire quelques cours là dessus avant d'attaquer ce sera un plus indéniable.


Pour ce premier exercice nous allons concevoir un contrôleur basique qui permet de déplacer un cube en fonction des contrôles du joueur. Pour commencer, nous allons créer deux objets, un plan (GameObject->CreateOther->Plane) et un Cube (même menu). Positionnez le cube de sorte qu'il flotte légèrement au dessus du plan.


[Unity3d] Bien commencer avec Unity3d : déplacer un cube

En cliquant sur le bouton play, la simulation commence. Mais rien ne se passe. C'est normal, nous allons maintenant créer un nouveau "component" et l'ajouter sur ce cube. Cliquez sur le cube et descendez en bas de l'inspecteur qui se situe sur la droite de votre écran. Cliquez sur "Add Component" > "New script", nommez le CubeController par exemple et sélectionnez de préférence le language CSharp.

[Unity3d] Bien commencer avec Unity3d : déplacer un cube

Votre nouveau component est automatiquement ajouté à votre objet. Il est présenté par son nom et le type de component "(Script)" qui lui est associé. En double cliquant sur le champ "CubeController" Unity ouvrira automatiquement l'éditeur de code associé, par défaut MonoDevelop.

Vous arrivez dans un fichier de classe C# préconstruit dans lequel se trouvent 2 fonctions : Start et Update.
 

Start est la fonction appellée au démarrage du jeu, elle permet d'initialiser vos variables et faire des traitements préalables à l'exécution, tandis qu'Update sera exécuté à chaque boucle du jeu, environ 60 fois par seconde.

Puisque vous êtes familiarisé avec la POO vous remarquerez dans le début du fichier la déclaration de la classe
 

public class CubeController : MonoBehaviour 


Ceci implique que notre nouveau script hérite de la classe MonoBehaviour, ce sera le cas pour la grande majorité de vos scripts sur Unity, un petit tour dans la documentation, vous détaillera toutes les autres variables et fonctions utiles accessibles depuis votre classe.


Pour l'instant nous allons nous contenter de la fonction update. Vous aurez probablement remarqué qu'en déplaçant votre objet dans la scène vous avez modifié les valeurs du component "transform" (tout en haut dans l'inspecteur) de votre cube. Et bien nous allons faire exactement la même chose mais depuis le code de notre nouveau component CubeController.

Mon premier MonoBehaviour

La classe MonoBehaviour dispose d'un accesseur direct au component transform, c'est très pratique, et en consultant la documentation du fameux component Transform nous apprenons qu'il est notament composé d'une variable "Position", de type Vector3 qui représente sa position dans l'espace. Essayons de modifier sa valeur en lui ajoutant, à chaque boucle (ou frame) un léger déplacement.

void Update () {
    transform.position = transform.position + new Vector3(0.0f ,0.0f, 0.1f);
}

Cliquez sur le bouton play, et admirez votre cube se déplacer tout seul ! Concrètement, à chaque nouvelle image, le cube est position à sa position + un déplacement de 0,1 unité en Z. Vous pouvez modifier les valeurs de ce vecteur pour tester les autres directions. Mais vous pouvez aussi y brancher ... les contrôles du joueur !

Les inputs

Il existe de nombreuses façons de récupérer les entrées de l'utilisateur. Pour une première version nous allons nous contenter d'écouter les touches directionnelles avec la fonction Input.GetKey et d'interpréter ces touches pour déplacer notre cube.

void Update ()
{
// Création d'un nouveau vecteur de déplacement
Vector3 move = new Vector3();

// Récupération des touches haut et bas
if(Input.GetKey(KeyCode.UpArrow))
   move.z += 0.1f;
if(Input.GetKey(KeyCode.DownArrow))
move.z -= 0.1f;

// Récupération des touches gauche et droite
if(Input.GetKey(KeyCode.LeftArrow))
move.x -= 0.1f;
if(Input.GetKey(KeyCode.RightArrow))
move.x += 0.1f;

// On applique le mouvement à l'objet
transform.position += move;
}

Lancez le jeu et déplacez votre objet avec les flèches directionelles. C'est magique !

Les variables

Maintenant que notre cube se déplace, nous aimerions peut-être pouvoir régler sa vitesse de déplacement plus simplement, nous allons alors créer une variable publique afin de pouvoir modifier sa valeur directement depuis l'inspecteur d'Unity :

public class CubeController : MonoBehaviour 
{
// Déclaration de la variable de vitesse
public float m_speed = 0.1f;

void Update ()
{
// Création d'un nouveau vecteur de déplacement
Vector3 move = new Vector3();

// Récupération des touches haut et bas
if(Input.GetKey(KeyCode.UpArrow))
move.z += m_speed;
if(Input.GetKey(KeyCode.DownArrow))
move.z -= m_speed;

// Récupération des touches gauche et droite
if(Input.GetKey(KeyCode.LeftArrow))
move.x -= m_speed;
if(Input.GetKey(KeyCode.RightArrow))
move.x += m_speed;

// On applique le mouvement à l'objet
transform.position += move;
}
}

Vous avez désormais accès à cette variable directement dans la scène pour régler simplement la vitesse de déplacement de votre cube :
 

[Unity3d] Bien commencer avec Unity3d : déplacer un cube


Voici les bases du déplacement, c'est aussi simple que celà. J'espère que ce premier tutoriel vous a permis de comprendre brièvement comment fonctionne l'intéraction entre les scripts et les objets dans Unity3d. Si vous souhaitez aller plus loin, laissez un commentaire et dites moi quelle est la prochaine étape que vous aimeriez atteindre. Ce cube pourrait être le début d'une grande aventure, devenir un personnage animé, un pétale de fleur ... ou pourquoi pas un véhicule qui franchit des montagnes et tire des feux d'artifices ! Laissez libre court à votre imagination !


Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

A propos de l’auteur


Sébastien Cardona 218 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossier Paperblog