Unity - Marble Madness 3D

Déplacement du joueur

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Sommaire

Vous pouvez retrouver les autres épisodes de cette série dans le sommaire dédié.

II. Vidéo


Unity - Marble Madness 3D - Déplacement du joueur


III. Résumé

Dans ce chapitre, nous apprenons à déplacer le joueur.

III-A. Comportement

Nous souhaitons que la balle se déplace sur notre plan, mais aussi qu'elle rebondisse contre les murs (et cela, sans s'envoler), qu'elle ramasse d'autres « GameObjects ». Tout ceci nécessite l'utilisation de la physique.

III-A-1. Ajout de la physique

Pour ajouter la gestion de la physique à un élément du jeu, sélectionnez-le et ajoutez un composant « RigidBody ».

III-B. Déplacer la balle

Pour déplacer la balle, il faut lui appliquer des forces. Ces forces dépendent des touches sur lesquelles appuie le joueur. Pour intégrer le lien entre les touches du clavier et son effet dans le jeu, nous utilisons un script que l'on attache à la balle.

III-B-1. Script PlayerController.cs

Nous souhaitons que le script vérifie à chaque image, les touches appuyées par le joueur. Suivant celles-ci, nous souhaitons appliquer la force adéquate pour déplacer la balle. Pour effectuer une action à chaque image, nous avons deux choix :

  • la fonction Update() est appelée avant le rendu de l'image ;
  • la fonction FixedUpdate() est appelée juste avant le calcul de la physique.

Comme le déplacement de la balle est effectué par l'application de forces sur celle-ci, nous utilisons la fonction FixedUpdate().

Pour récupérer l'appui par le joueur sur les touches de déplacement, nous utilisons la fonction Input.GetAxis().

Pour appliquer une force à un « RigidBody », nous utilisons la fonction AddForce().

Pour accéder au « RigidBody » associé à la balle, nous utilisons la fonction GetComponent() de laquelle nous stockons le résultat dans une variable. Afin de ne pas surcharger l'ordinateur, nous effectuons cette recherche du « RigidBody » dans la fonction Start() qui n'est exécutée qu'au démarrage du jeu.

Voici le script pour déplacer la balle :

 
Sélectionnez
using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

    public float speed;

    private Rigidbody rb;

    void Start ()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate ()
    {
        float moveHorizontal = Input.GetAxis ("Horizontal");
        float moveVertical = Input.GetAxis ("Vertical");

        Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);

        rb.AddForce (movement * speed);
    }
}

La variable speed est publique afin de permettre au développeur de modifier la vitesse de la balle directement dans l'éditeur, sans avoir à retoucher le script.

IV. Commenter

Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2015 Unity Technologies. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.