I. Introduction▲
Cette série explique pas à pas la création d'un contrôleur pour le mouvement d'un personnage dans un jeu de plateformes 2D.
Vous pouvez retrouver les autres épisodes de cette série dans le sommaire dédié.
II. Vidéo▲
Unity - Contrôleur pour personnage d'un jeu de plateformes - Script pour la gravité
III. Résumé▲
Dans ce chapitre, vous allez implémenter la gravité.
III-A. Mise en place▲
Dans ce tutoriel, la gravité sera appliquée à une caisse. Pour que celle-ci fonctionne, il faut utiliser les composants suivants :
Le type du « RigidBody 2D » est défini à « Kinematic ». Ainsi, il ne sera pas déplacé par la simulation physique mais uniquement par un script.
Ensuite, vous devez créer un nouveau script « PhysicsObject.cs » :
using
System.
Collections;
using
System.
Collections.
Generic;
using
UnityEngine;
public
class
PhysicsObject :
MonoBehaviour {
public
float
gravityModifier =
1f
;
protected
Rigidbody2D rb2d;
protected
Vector2 velocity;
void
OnEnable
(
)
{
rb2d =
GetComponent<
Rigidbody2D>
(
);
}
void
Start (
)
{
}
void
Update (
)
{
}
void
FixedUpdate
(
)
{
velocity +=
gravityModifier *
Physics2D.
gravity *
Time.
deltaTime;
Vector2 deltaPosition =
velocity *
Time.
deltaTime;
Vector2 move =
Vector2.
up *
deltaPosition.
y;
Movement (
move);
}
void
Movement
(
Vector2 move)
{
rb2d.
position =
rb2d.
position +
move;
}
}
Dans un script, si vous souhaitez déplacer un élément de votre scène gérée par le moteur physique (embarquant un « RigidBody 2D »), vous devez utiliser la fonction FixedUpdate().
Dans celle-ci, vous allez simplement calculer la vélocité de l'objet suivant la gravité. Ensuite, vous allez appliquer cette vélocité pour déplacer l'objet.
Si vous lancez le script, la caisse sera effectivement affectée par la gravité et tombera. Toutefois, aucune collision n'est gérée et elle traversera le sol.
IV. Ressources▲
Vous pouvez télécharger les ressources pour ce projet ici.
V. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.