Jouer des animations de personnage

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Jouer des animations de personnage est une partie importante de ce qui rend les avatars et les personnages non jouables (PNJ) expressifs, réalistes et engageants pour votre public. En plus de fournir des visuels immersifs, les animations de personnage offrent aux joueurs des retours sur leurs actions, des conseils sur la façon de naviguer dans l'environnement, et des informations vitales sur leur personnage et les autres.

En utilisant le fichier .rbxl de la Station Spatiale Dangereuse comme référence, ce tutoriel vous montre comment jouer des animations de personnage en utilisant deux techniques différentes, y compris des conseils sur :

  • Échanger les ID d'actifs d'animation de personnage par défaut avec vos propres animations personnalisées.
  • Déclencher des animations en réponse aux actions des personnages dans l'espace 3D.

Après avoir terminé ce tutoriel, vous aurez les compétences nécessaires pour personnaliser les animations pour une grande variété de situations de jeu.

Changer les animations par défaut

Chaque personnage avec un objet Humanoid par défaut, qu'il s'agisse d'un avatar contrôlé par un joueur ou d'un personnage non joueur (PNJ), comprend un ensemble d'animations par défaut qui se jouent chaque fois que le personnage effectue des actions spécifiques dans le jeu, telles que courir, grimper et sauter. Roblox fournit ces animations prêtes à l'emploi pour chaque jeu sans aucun effort de script supplémentaire.

Animation de chute par défaut
Animation de nage par défaut
Animation d'escalade par défaut

Cependant, si ces animations par défaut ne répondent pas aux exigences de conception de l'environnement, de l'esthétique ou de la narration globale de votre monde, vous pouvez les remplacer par des animations personnalisées qui s'appliquent à chaque joueur qui rejoint votre jeu.

Pour démontrer, la section suivante vous apprend comment remplacer l'animation de marche par défaut par un cycle de marche personnalisé provenant de Créer des animations de personnage. En utilisant ce même processus, vous pouvez remplacer n'importe laquelle des animations par défaut par vos propres ID d'actifs d'animation.

Animation de marche par défaut
Animation de marche personnalisée

Créer un script

Chaque objet Humanoid d'un personnage comprend un objet enfant Animator qui stocke toutes les animations par défaut du personnage. Afin de définir l'une de ces animations par défaut sur de nouveaux ID d'actifs, vous devez créer un script dans le ServerScriptService afin qu'il puisse référencer et remplacer les valeurs par défaut de l'objet Animator dès que les joueurs chargent dans le jeu.

Pour créer un script qui référencera les ID d'actifs d'animation par défaut :

  1. Dans la fenêtre Explorer, ajoutez un nouveau script à ServerScriptService.

    1. Survolez ServerScriptService et cliquez sur le bouton ⊕.
    2. Dans le menu contextuel, insérez un Script.
  2. Dans le nouveau script, collez le code suivant :

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animateur trouvé !")
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

Le script ResetDefaultAnimations commence par obtenir le service Players, qui contient tous les objets Player pour les joueurs lorsqu'ils se connectent à un serveur. Lorsque chacun des personnages des joueurs se charge dans le jeu, la fonction onCharacterAdded attend jusqu'à ce qu'elle détecte les objets Humanoid et Animator du personnage.

Lorsqu'il détecte un objet Animator pour la première fois, le script imprime alors "Animateur trouvé !" pour vous faire savoir que le script fonctionne comme prévu.

Remplacer l'ID d'actif

Maintenant que vous savez que votre script est capable de détecter quand les joueurs se chargent et se connectent au serveur, vous pouvez modifier votre script pour référencer spécifiquement l'ID d'animation que vous souhaitez remplacer par vos propres animations personnalisées.

Le tableau suivant contient toutes les animations par défaut des personnages que vous pouvez appeler et remplacer dans l'objet Animator. Notez que l'animation Idle a deux variations que vous pouvez programmer pour jouer plus ou moins fréquemment.

Action du personnageRéférence du script d'animation
CouriranimateScript.run.RunAnim.AnimationId
MarcheranimateScript.walk.WalkAnim.AnimationId
SauteranimateScript.jump.JumpAnim.AnimationId
Idle

animateScript.idle.Animation1.AnimationId
animateScript.idle.Animation2.AnimationId

TomberanimateScript.fall.FallAnim.AnimationId
Nager

animateScript.swim.Swim.AnimationId

Nager (Idle)

animateScript.swimidle.SwimIdle.AnimationId

GrimperanimateScript.climb.ClimbAnim.AnimationId

Pour remplacer l'ID d'actif de l'animation de marche par défaut :

  1. Appelez la référence du script d'animation de marche par défaut, puis remplacez l'ID d'actif par votre propre ID d'animation personnalisée. Par exemple, l'échantillon de code suivant fait référence à l'animation de cycle de marche provenant de Créer des animations de personnage.

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animateur trouvé !")
    local animateScript = character:WaitForChild("Animate")
    animateScript.walk.WalkAnim.AnimationId = "rbxassetid://122652394532816"
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  2. Testez votre jeu pour vous assurer que votre animation de marche personnalisée remplace l'animation par défaut.

    1. Choisissez Test dans le menu déroulant et cliquez sur le bouton Jouer à sa droite pour commencer le test.

      Option Test dans le menu déroulant des modes de test du mezzanine de Studio.
    2. Déplacez-vous dans la station spatiale avec votre avatar.

Déclencher des animations

Alors que la technique précédente se concentre sur le remplacement des animations par défaut qui se jouent automatiquement chaque fois qu'un personnage effectue des actions spécifiques dans le jeu, vous pouvez déclencher des animations de manière programmatique en réponse à n'importe quelle action de personnage dans l'espace 3D, comme ramasser un objet ou subir des dégâts d'un danger.

Dans cet exemple, lorsque les joueurs touchent la plateforme dorée, ils déclenchent une animation de danse de personnage non par défaut.

Cette méthode de lecture des animations est utile car elle fournit aux joueurs un retour instantané sur la façon dont ils doivent interagir avec les objets de leur environnement. Pour démontrer, la section suivante vous montre comment déclencher une animation chaque fois que les personnages sont trop proches de fuites de vapeur dangereuses, comme un moyen d'enseigner subtilement aux joueurs d'éviter de marcher trop près des murs.

Insérer un volume

L'une des manières les plus courantes de déclencher un comportement de jeu unique est d'utiliser des volumes, ou des régions invisibles dans l'espace 3D, pour détecter quand des personnages ou des objets interagissent avec des zones spécifiques de l'environnement. Lorsque vous associez des volumes avec des scripts, vous pouvez utiliser leur retour d'information de collision pour déclencher de manière programmatique des actions, telles que réduire la santé du joueur ou jouer une animation.

Une vue éloignée d'une pièce de manoir. Un contour de boîte est au milieu de la pièce pour signifier le volume qui déclenche des événements de jeu.
Le Mystère de Duvall Drive utilise des volumes pour déclencher des événements de jeu qui changent l'apparence visuelle de la pièce.

Lors de l'ajout d'un volume à votre jeu, il est important de le mettre à l'échelle afin qu'il ne couvre que l'espace que vous souhaitez utiliser pour déclencher votre animation. Si vous rendez votre volume trop petit, les joueurs peuvent ne jamais entrer en collision avec la zone pour jouer l'animation ; inversement, si vous rendez votre volume trop grand, l'animation se jouera avant que les joueurs n'atteignent l'objet ou la zone d'intérêt, et ils peuvent ne pas comprendre ce qu'ils ont fait pour déclencher l'animation.

Pour insérer un volume autour d'une fuite de vapeur qui déclenchera une animation :

  1. Dans la fenêtre Explorer, ajoutez une nouvelle partie de bloc.
  2. Positionnez et redimensionnez le bloc jusqu'à ce qu'il couvre la zone que vous souhaitez utiliser pour déclencher votre animation.
  3. Dans la fenêtre Propriétés,
    1. Définissez Nom sur AnimationDetector.

    2. Définissez Transparence sur 1 pour rendre le bloc invisible.

      Un contour d'un bloc est visible autour d'une évent de vapeur pour signifier la position du volume.

Créer un script

Maintenant que vous avez une région définie pour déclencher votre animation, il est temps de créer un script qui détecte de manière programmatique chaque fois que les joueurs entrent en collision avec le volume. Vous pouvez ensuite écouter les événements de collision pour déclencher toute animation qui a du sens pour vos exigences de jeu.

Par exemple, cette technique d'animation utilise un LocalScript au lieu d'un Script pour fournir aux joueurs un retour immédiat lorsqu'ils entrent en collision avec le volume. Si le serveur devait écouter la collision et jouer l'animation, il pourrait y avoir un délai entre le moment où le joueur touche le volume sur son client et le moment où il voit l'animation se jouer en raison du temps de réplication du serveur au client.

Pour créer un script local qui détectera quand le personnage du joueur local touche le volume :

  1. Dans la fenêtre Explorer, ajoutez un nouveau script à StarterCharacterScripts. Ce placement garantit que le script et ses enfants se clonent dans le personnage du joueur lors de son entrée et lorsqu'il respawn dans le jeu.

    1. Développez StarterPlayer, puis survolez son enfant StarterCharacterScripts et cliquez sur le bouton ⊕.
    2. Dans le menu contextuel, insérez un LocalScript et renommez-le en TriggerAnimation.
  2. Dans le nouveau script, collez le code suivant :

    local Workspace = game:GetService("Workspace")
    local animation = script:WaitForChild("Animation")
    local humanoid = script.Parent:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    local animationTrack = animator:LoadAnimation(animation)
    local animationDetector = Workspace:WaitForChild("AnimationDetector")
    local debounce = false
    animationDetector.Touched:Connect(function(hit)
    if debounce then
    return
    end
    local hitCharacter = hit:FindFirstAncestorWhichIsA("Model")
    if hitCharacter ~= localCharacter then
    return
    end
    debounce = true
    animationTrack:Play()
    animationTrack.Ended:Wait()
    debounce = false
    end)

Le script TriggerAnimation commence par obtenir le service Workspace, qui contient tous les objets qui existent dans le monde 3D. Cela est important car le script doit référencer l'objet Part agissant comme votre volume.

Pour chaque personnage de joueur qui se charge ou respawn dans le jeu, le script attend :

  • Son objet enfant Animation, que vous ajouterez dans la section suivante.
  • Les objets Humanoid et Animator du personnage.
  • L'objet volume dans l'espace de travail nommé AnimationDetector.

Lorsque quoi que ce soit entre en collision avec le volume, la fonction de gestionnaire d'événements Touched obtient le premier ancêtre qui est un Model, qui devrait être le personnage si le BasePart qui a heurté le volume est un descendant d'un modèle de personnage. Si c'est le cas, la fonction vérifie ensuite si le Model est le personnage du joueur local. Si c'est le cas, la fonction :

  • Définit debounce sur true.
  • Joue et attend que l'animation se termine.
  • Définit debounce sur false.

Définir debounce de false à true puis à false à nouveau après la fin de l'animation est un modèle de debounce qui empêche l'animation de se déclencher à plusieurs reprises alors que les joueurs entrent continuellement en collision avec le volume. Pour plus d'informations sur ce modèle de debounce, voir Détecter les collisions.

Ajouter une animation

Si vous deviez tester votre jeu maintenant, votre script TriggerAnimation ne pourrait toujours pas jouer une animation en réponse à la collision joueur-local avec le volume. Cela est dû au fait qu'il attend un objet enfant Animation avec un ID d'actif d'animation qu'il peut référencer, et cet objet Animation n'existe actuellement pas.

Pour ajouter une animation que le script local pourra référencer lorsque les joueurs entrent en collision avec le volume :

  1. Dans la fenêtre Explorer, ajoutez une nouvelle animation à TriggerAnimation.

    1. Survolez TriggerAnimation et cliquez sur le bouton ⊕.
    2. Dans le menu contextuel, insérez une Animation.
  2. Sélectionnez le nouvel objet d'animation, puis dans la fenêtre Propriétés, définissez AnimationID sur l'ID d'actif d'animation que vous souhaitez déclencher lorsque les joueurs touchent le volume. Par exemple, l'échantillon de la Station Spatiale Dangereuse fait référence à rbxassetid://3716468774 pour jouer une animation d'un personnage tombant en arrière.

  3. Testez votre jeu pour vous assurer que votre animation se joue lorsque les joueurs sont près de la première fuite de vapeur.

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.