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 :
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.