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 - Animation du joueur
III. Résumé▲
Dans cet épisode nous allons ajouter les animations du joueur.
III-A. Implémentation▲
Dans le script créé dans l'épisode précédent, il suffit d'utiliser la vélocité du joueur pour savoir si le joueur va à gauche ou à droite et retourner le sprite en conséquence. Pour l'animation du saut, il n'y a qu'à réutiliser la variable grounded :
using
System.
Collections;
using
System.
Collections.
Generic;
using
UnityEngine;
public
class
PlayerPlatformerController :
PhysicsObject {
public
float
maxSpeed =
7
;
public
float
jumpTakeOffSpeed =
7
;
private
SpriteRenderer spriteRenderer;
private
Animator animator;
// Utiliser cette fonction pour l'initialisation
void
Awake (
)
{
spriteRenderer =
GetComponent<
SpriteRenderer>
(
);
animator =
GetComponent<
Animator>
(
);
}
protected
override
void
ComputeVelocity
(
)
{
Vector2 move =
Vector2.
zero;
move.
x =
Input.
GetAxis (
"Horizontal"
);
if
(
Input.
GetButtonDown (
"Jump"
) &&
grounded) {
velocity.
y =
jumpTakeOffSpeed;
}
else
if
(
Input.
GetButtonUp (
"Jump"
))
{
if
(
velocity.
y >
0
) {
velocity.
y =
velocity.
y *
0
.
5f
;
}
}
bool
flipSprite =
(
spriteRenderer.
flipX ?
(
move.
x >
0
.
01f
) :
(
move.
x <
0
.
01f
));
if
(
flipSprite)
{
spriteRenderer.
flipX =
!
spriteRenderer.
flipX;
}
animator.
SetBool (
"grounded"
,
grounded);
animator.
SetFloat (
"velocityX"
,
Mathf.
Abs (
velocity.
x) /
maxSpeed);
targetVelocity =
move *
maxSpeed;
}
}
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.