Commencer
Tutoriels intermédiaires

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-joueurs (PNJ) expressifs, réalistes et engageants pour votre public. En plus de fournir des visuels immersifs, les animations de personnage donnent aux joueurs des retours sur leurs actions, des conseils sur la façon de naviguer dans l'environnement et des informations essentielles sur leur personnage et les autres.

En utilisant le fichier Hazardous Space Station .rbxl comme référence, ce tutoriel vous montre comment jouer des animations de personnage en utilisant deux techniques différentes, incluant des conseils sur :

  • Échanger les ID d'actif 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 par défaut Humanoid, 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 l'expérience, telles que courir, grimper et sauter. Roblox fournit ces animations prêtes à l'emploi pour chaque expérience sans effort de script supplémentaire.

Animation de chute par défaut
Animation de nage par défaut
Animation de montée par défaut

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

Pour démontrer, la section suivante vous apprend comment remplacer l'animation de marche par défaut par un cycle d'animation de marche personnalisé provenant de Create Character Animations. En utilisant ce même processus, vous pouvez remplacer n'importe quelle animation par défaut par vos propres ID d'actif d'animation.

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

Créer un script

Chaque objet Humanoid d'un personnage inclut 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'actif, 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 l'expérience.

Pour créer un script qui fera référence aux ID d'actif 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 à mesure qu'ils se connectent à un serveur. Lorsque chacun des personnages des joueurs charge dans l'expérience, la fonction onCharacterAdded attend 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 peut détecter lorsque les joueurs chargent et se connectent au serveur, vous pouvez modifier votre script pour faire référence spécifiquement aux ID d'animation que vous souhaitez remplacer par vos propres animations personnalisées.

Le tableau suivant contient toutes les animations par défaut du personnage que vous pouvez appeler et remplacer au sein de l'objet Animator. Notez que Idle a deux variations que vous pouvez programmer pour lire plus ou moins souvent.

Action du personnageRéférence du script Animate
CouriranimateScript.run.RunAnim.AnimationId
MarcheranimateScript.walk.WalkAnim.AnimationId
SauteranimateScript.jump.JumpAnim.AnimationId
Inactif

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

ChuteanimateScript.fall.FallAnim.AnimationId
NageranimateScript.swim.Swim.AnimationId
Nager (Inactif)animateScript.swimidle.SwimIdle.AnimationId
GrimperanimateScript.climb.ClimbAnim.AnimationId

Pour remplacer l'ID d'actif d'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'actif d'animation personnalisée. Par exemple, l'extrait de code suivant fait référence à l'animation de cycle de marche provenant de Create Character Animations.


    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. Faites un test de votre expérience 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 dans la 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 l'échange des animations par défaut qui se jouent automatiquement chaque fois qu'un personnage effectue des actions spécifiques dans l'expérience, vous pouvez déclencher des animations à la demande pour répondre à n'importe quelle action de personnage dans l'espace 3D, telle que 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 des objets dans 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 à é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 au sein de l'espace 3D, pour détecter quand les personnages ou objets interagissent avec des zones spécifiques de l'environnement. Lorsque vous associez des volumes avec des scripts, vous pouvez utiliser leur retour de collision pour déclencher programmétiquement des actions, telles que réduire la santé du joueur ou jouer une animation.

Une vue lointaine d'une pièce de manoir. Un contour de boîte se trouve au milieu de la pièce pour signifier le volume qui déclenche des événements de jeu.
The Mystery of 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 expérience, il est important de le dimensionner de manière à ce qu'il ne couvre que l'espace que vous souhaitez utiliser pour déclencher votre animation. Si vous faites votre volume trop petit, les joueurs pourraient ne jamais entrer en collision avec la zone pour jouer l'animation ; inversement, si vous faites 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 pourraient 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 pièce en bloc.
  2. Positionnez et redimensionnez le bloc jusqu'à ce qu'il recouvre 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 sortie 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 programmétiquement quand les joueurs entrent en collision avec le volume. Vous pouvez alors écouter les événements de collision pour déclencher toute animation qui a du sens pour les exigences de votre jeu.

Par exemple, cette technique d'animation utilise un LocalScript au lieu d'un Script pour fournir un retour immédiat aux joueurs 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 voient l'animation jouer à cause du temps de réplication du serveur vers le client.

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

  1. Dans la fenêtre Explorer, ajoutez un nouveau script à StarterCharacterScripts. Cet emplacement garantit que le script et ses enfants se clonent dans le personnage du joueur lors de l'entrée et lorsqu'ils réapparaissent dans l'expérience.

    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 joueur qui charge ou réapparaît dans l'expérience, le script attend :

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

Lorsque quelque chose entre en collision avec le volume, la fonction gestionnaire d'événements Touched obtient le premier ancêtre qui est un Model, ce qui devrait être le personnage si le BasePart qui est entré en collision avec 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 local joueur. Si c'est le cas, la fonction alors :

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

Définir debounce de false à true puis à false encore après que l'animation ait terminé de jouer est un modèle de débounce qui empêche l'animation de se déclencher de manière répétée alors que les joueurs entrent continuellement en collision avec le volume. Pour plus d'informations sur ce modèle de débounce, voir Détecter des collisions.

Ajouter une animation

Si vous deviez tester votre expérience en ce moment, votre script TriggerAnimation ne pourrait toujours pas jouer d'animation en réponse à la collision entre le joueur local et le volume. Cela est dû au fait qu'il attend un objet enfant Animation avec un ID d'actif d'animation auquel il peut faire référence, et cet objet Animation n'existe actuellement pas.

Pour ajouter une animation pour que le script local puisse y faire référence 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'exemple de la Hazardous Space Station fait référence à rbxassetid://3716468774 pour jouer une animation d'un personnage tombant en arrière.

  3. Testez votre expérience pour vous assurer que votre animation se joue lorsque les joueurs sont proches 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.