Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
We use cookies to ensure that we provide you with the best possible experience on our site.
Votre source incontournable sur Unity et le développement web
Votre source incontournable sur Unity et le développement web
Sur Unity, il est possible de jouer des animations de trois manières distinctes, chacune offrant une utilité unique.
Peu importe la méthode choisie, vous aurez besoin d’un composant Animator contenant vos états d’animation.
Table des matières
Pour lancer une animation dans le code, nous utilisons la propriété « Play » contenu dans notre « Animator« :
using UnityEngine;
public class AnimatorTest : MonoBehaviour
{
public Animator animator;
private int idleHash;
private void Awake()
{
idleHash = Animator.StringToHash("Idle");
}
public void Start()
{
animator.Play(idleHash);
}
}
Cette approche est particulièrement avantageuse lorsque vous souhaitez un contrôle complet via le code.
L’utilisation de Animator.StringToHash améliore les performances, car il précalcule un hachage du nom de l’état d’animation.
Bien que cette optimisation n’ait pas un impact significatif lors d’un seul appel, elle devient essentielle dans des scénarios avec de nombreux changements d’état, tels que dans une boucle « Update ».
Ensuite pour lancer l’animation nous utilisons cette fois-ci la propriété « SetBool » pour passer notre boolean à true.
using UnityEngine;
public class AnimatorTest : MonoBehaviour
{
public Animator animator;
private int _isWalkHash;
private
void Awake()
{
_isWalkHash = Animator.StringToHash("isWalk");
}
public void Start()
{
animator.SetBool(_isWalkHash, true);
}
}
L’utilisation de paramètres booléens est particulièrement bénéfique lorsque vous souhaitez démarrer une animation lorsque un booléen devient vrai et l’arrêter lorsque le booléen devient faux.
Cette méthode est idéale pour les animations comme les cycles de marche des personnages.
Ensuite pour lancer l’animation avec notre trigger, nous utilisons cette fois-ci la propriété « SetTrigger » qui activera notre trigger.
using UnityEngine;
public class AnimatorTest : MonoBehaviour
{
public Animator animator;
private int _isWalkHash;
private void Awake()
{
_isWalkHash = Animator.StringToHash("isWalk");
}
public void Start()
{
animator.SetTrigger(_isWalkHash);
}
}
Les paramètres trigger sont idéaux pour les animations telles que les séquences d’attaque, où vous souhaitez qu’une animation se joue une fois et s’arrête automatiquement.
Lorsqu’un déclenchement est défini, il est automatiquement désactivé lors du changement d’état de l’animateur.
Si vous devez réinitialiser un déclenchement pour une exécution simultanée, vous pouvez appeler la fonction « ResetTrigger ».
Cette méthode garantit que les animations ne sont pas interrompues pendant leur exécution.
Pour lancer une animation après l’appui d’une touche nous pouvons utiliser l’input Manager et sa méthode « Input.GetKey« :
using UnityEngine;
public class AnimatorTest : MonoBehaviour
{
public Animator animator;
private int idleHash;
private void Awake()
{
idleHash = Animator.StringToHash("Idle");
}
public void Update()
{
if (Input.GetKey(KeyCode.A))
{
// Key A est maintenue
animator.Play(idleHash);
}
}
}
Pour rappel il peut être préférable maintenant d’utiliser Input System le nouvel Input Manager à la place.
Pour jouer l’animation en inversé nous pouvons modifier dans l’animator le paramètre « speed » de notre state et lui donner une valeur négative.
Si vous souhaitez plutôt directement dupliquer votre animation et la transformer en inverse, je vous conseille de faire un tour sur ce post.