Charakter-Animationen spielen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Charakter-Animationen spielen ist ein wichtiger Teil davon, was Avatare und nicht spielbare Charaktere (NPCs) expressiv, realistisch und ansprechend für Ihr Publikum sind. Darüber hinaus, bieten Charakter-Animationen den Spielern Feedback von ihren Aktionen, Anleitung zum Navigieren der Umgebung und lebenswichtige Informationen über ihren Charakter und andere.

Dieses Tutorial zeigt dir, wie du zwei verschiedene Animationstechniken verwenden kannst, um Charakter-Animationen zu spielen, einschließlich Anleitung zu:

  • Standard-Charakter-Animationen mit deinen benutzerdefinierten Animationen tauschen.
  • Auslösen von Animationen in der Reaktion auf Charakteraktionen innerhalb des Platz.

Nachdem du dieses Tutorial abgeschlossen hast, hast du die Fähigkeit, Animationen für eine Vielzahl von Spielsituationen anzupassen.

Standard-Animationen ändern

Jeder Charakter mit einem Standard- Humanoid -Objekt, egal ob es ein Spieler-controlled-Avatar oder ein Nicht-Spieler-Charakter (NPC) ist, enthält eine Reihe von Standard-Animationen , die immer abgespielt werden, wenn der Charakter spezifische In-Experience-Aktionen ausführt, z. B. Laufen, Klettern und Springen. Roblox bietet diese Animationen aus der

Standard-Herbst-Animation
Standard-Schwimm-Animation
Standard-Kletteranimation

Wenn diese Standard-Animationen jedoch nicht die Design-Anforderungen für die Umgebung, das Aussehen oder die Gesamtwohnung deiner Welt erfüllen, kannst du sie mit benutzerdefinierten Animationen tauschen, die auf jeden Spieler angewendet werden, der deine Erlebnisbetritt. Diese Spieldesign-Technik kann helfen, deine Charaktere und Erfahrungen zu fühlen, persönlicher, ansprechender und immersiver zu machen.

Um das zu zeigen, zeigt die folgende Sektion dir, wie du die Standard-Laufsound-Animation mit einer benutzerdefinierten Laufsound-Animation aus Creating Character Animations tauschen kannst. Mit diesem Prozess kannst du jede der Standard-Animationen mit deinen eigenen Animations-Assets tauschen.

Standard-Lauf-Animation
Benutzerdefinierte Geh-Animation

Skript erstellen

Jedes Charakter-Objekt Humanoid enthält ein Kind Animator -Objekt, das alle Standard-Animationen des Charakters speichert. Um eine dieser Standard-Animationen auf neue Asset-IDs zu setzen, musst du ein Skript im Class.ServiceScriptService erstellen, damit es auf die Standardwerte des Charakters

Um ein Skript zu erstellen, das auf die Standard-Animations-Asset-IDs verweist:

  1. In dem Explorer-Fenster fügen Sie ein neues Skript zu ServerScriptService hinzu.

    1. Bewegen Sie den Mauszeiger über ServerScriptService und klicken Sie auf die Schaltfläche ⊕.
    2. Vom Kontextmenü, fügen Sie ein Skript ein.
  2. Fügen Sie im neuen Skript, das. PL: die Skriptsden folgenden Codesein:


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

Das ResetDefaultAnimations-Skript beginnt, indem es den Players -Dienst erhält, der alle Player -Objekte für Spieler enthält, wenn sie sich mit einem Server verbinden. Wenn sich jeder der Spieler:inin die Erlebnis

Wenn es das erste Mal ein Animator -Objekt erkennt, druckt das Skript dann "Animator gefunden!" , um Sie darüber zu informieren, dass das Skript wie vorgesehen funktioniert.

AssetID ersetzen

Da Sie jetzt wissen, dass Ihr Skript in der Lage ist, die Spieler beim Laden und Verbinden mit dem Server zu erkennen, können Sie Ihr Skript modifizieren, um die Animation id(s) zu verwenden, die Sie mit Ihren eigenen benutzerdefinierten Animationen tauschen möchten.

Die folgende Tabelle enthält alle Standard-Charakteranimationen, die Sie aufrufen und ersetzen können, innerhalb des Animator -Objekts. Beachten Sie, dass Idle zwei Variationen hat, die Sie programmieren können, um häufiger oder seltener zu spielen.

Charakter-AktionAnimieren Script-Referenz
Ausführen animateScript.run.RunAnim.AnimationId
Gehen animateScript.walk.WalkAnim.AnimationId
Springen animateScript.jump.JumpAnim.AnimationId
Leerlauf

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

Herbst animateScript.fall.FallAnim.AnimationId
Schwimmen

animateScript.swim.Swim.AnimationId

Schwimmen (Leer)

animateScript.swimidle.SwimIdle.AnimationId

Klettern animateScript.climb.ClimbAnim.AnimationId

Um die Standard-Lauf-Animation-AssetID zu ersetzen:

  1. Rufen Sie den Standard-Lauf-Animationsskript-Referenz auf, und ersetzen Sie dann die AssetID durch Ihre eigene benutzerdefinierte Animations-AssetID. Zum Beispiel verwendet das folgende Codebeispiel die Laufzyklus-Animation aus Creating Character Animations.


    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animator found!")
    local animateScript = character:WaitForChild("Animate")
    animateScript.walk.WalkAnim.AnimationId = "rbxassetid://122652394532816"
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  2. Teste deine Erlebnisse, um sicherzustellen, dass deine benutzerdefinierte Walk-Animation die Animationenüberschreibt.

    1. In der Menüleiste klicken Sie auf die Schaltfläche Spielen . Studio betritt den Spieltest-Modus.

      A Studio view of the Home tab with the Play button highlighted.
    2. Gehen Sie mit Ihrem Avatar durch die Raumstation.

Animationen auslösen

Während die vorherige Technik darauf konzentriert ist, Standard-Animationen auszutauschen, die automatisch gespielt werden, wenn ein Charakter bestimmte In-Experience-Aktionen ausführt, können Sie programmgesteuert Animationen auslösen, um in der Antwort auf jede Handlung -Handlung im Platzzu spielen, wie das Aufheben eines Gegenstands oder das Erleiden eines Schadens durch eine Gefahr.

In diesem Beispiel, wenn Spieler die goldene Plattform berühren, wird eine nicht standardmäßige Animationenausgelöst.

Diese Methode, Animationen zu spielen, ist nützlich, da sie den Spielern sofortiges Feedback darüber bietet, wie sie mit Objekten in ihrer Umgebung interagieren sollen. Um dies zu demonstrieren, zeigt der folgende Abschnitt, wie Sie eine Animation jedes Mal auslösen können, wenn sich die Charaktere zu nahe an gefährlichen Dampfausgaben befinden, als ein Weg, um die Spieler daran zu hindern, zu nahe an den Wänden zu gehen.

Einschubmen

Eine der häufigsten Möglichkeiten, einzigartiges Gameplay-Verhalten auszulösen, ist die Verwendung von Lautstärken oder unsichtbaren Regionen innerhalb des Platz, um zu erkennen, wenn sich Charaktere oder Objekte mit bestimmten Bereichen der Umgebung interagieren. Wenn Sie Lautstärken mit Skripten kombinieren, können Sie das Zusammenprallen von Aktionen programmieren, z. B. die Reduzierung der Gesundheit des Spieler:inoder das Spielen einer Animationen.

A far out view of a mansion room. An outline of a box is in the middle of the room to signify the volume that triggers gameplay events.
The Mystery of Duvall Drive verwendet Lautsprecher, um Spielereignisse auszulösen, die die visuelle Erscheinung des Raums ändern.

Wenn Sie ein Volumen zu Ihrem Erlebnis hinzufügen, ist es wichtig, es so zu skalieren, dass es nur den Bereich abdeckt, den Sie Ihre Animationenauslösen möchten. Wenn Sie Ihre Lautstärke zu klein machen, können die Spieler möglicherweise nicht mit dem Bereich kollidieren, um die Animationenzu spielen; im Gegensatz dazu, wenn Sie Ihre Lautstärke zu groß machen, wird die Animation vor den Spielern ausgeführt, die das Item oder den Bereich des Inter

Um eine Lautstärke um einen Kesselkamin zu ergänzen, die eine Animationenauslöst:

  1. In dem Explorer-Fenster , füge einen neuen Block hinzu.
  2. Positionieren und Skalieren Sie den Block, bis er die Bereich abdeckt, die Sie Ihre Animationenauslösen möchten.
  3. Im Eigenschaften -Fenster,
    1. Set Name zu AnimationDetektor .

    2. Setze Transparenz auf 1, um den Block unsichtbar zu machen.

      An outline of a block is visible around a steam vent to signify the position of the volume.

Skript erstellen

Jetzt, da Sie eine definierte Region für das Auslösen Ihrer Animationenhaben, ist es Zeit, ein Skript zu erstellen, das programmgesteuert detektiert, wenn Spieler mit der Lautstärke kollidieren. Sie können dann auf kollisionsevente hören, um jede Animation zu aktivieren, die für Ihre Spielanforderungen sinnvoll ist.

Zum Beispiel verwendet diese Animations技术 ein LocalScript anstelle eines Script, um sofortige Feedback für die Spieler zu liefern, wenn sie mit der Lautstärke kollidieren. Wenn der Server auf die Kollision und das Spielen der Animationenhörte, könnte es eine Verzögerung zwischen dem Spieler, der die Lautstärke berührt, und dem Spieler, der die Animation sieht, geben. Wenn die Server auf die Koll

Um ein lokales Skript zu erstellen, das feststellt, wenn der lokale Spieler:indie Lautstärke berührt:

  1. Im Explorer-Fenster , fügen Sie ein neues Skript zu StartercharacterScripts hinzu. Dieser Platzierung gewährleistet, dass das Skript und seine Kinder in den Spieler-Charakter auf join und wenn sie respawn back into the Erlebnis.

    1. Erweitern Sie StarterPlayer , dann bewegen Sie den Mauszeiger über seine StartercharacterScripts Tochter und klicken Sie auf die Schaltfläche ⊕.
    2. Vom Kontextmenü, fügen Sie einen lokalen Skript ein und benennen Sie ihn TriggerAnimation.
  2. Fügen Sie im neuen Skript, das. PL: die Skriptsden folgenden Codesein:


    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)

Das TriggerAnimation-Skript beginnt, indem Sie den Workspace -Dienst erhalten, der alle Objekte enthält, die in der 3D-Welt existieren. Dies ist wichtig, da das Skript auf das Part -Objekt referenzieren muss, das als Ihre Lautstärke agiert.

Für jeden Spieler, der wieder in die Erlebnislädt oder respawns, wartet das Skript auf:

  • Sein Kind Animation Objekt, das Sie in der nächsten Sektion hinzufügen.
  • Die Charakter- Humanoid und Animator Objekte.
  • Das Lautstärke-Objekt im Arbeitsbereich mit dem Namen AnimationDetector .

Wenn etwas mit der Lautstärke kollidiert, erhält der Touched -Ereignishändler die erste Vorgängerfigur, die ein Model ist, was der Charakter sein sollte, wenn der BasePart mit der Lautstärke kollidiert. Wenn es

  • Setzt den Abprall auf true .
  • Spielt und wartet auf die Animation, die beendensoll.
  • Setzt den Abprall auf false zurück.

Die Einstellung debounce von false zu true zu false nachdem die Animation fertig ist, die Spieler kontinuierlich mit der Lautstärke kollidieren, ist ein Debounce-Muster, das die Animation verhindert, dass die Animation wiederholt ausgelöst wird, wenn Spieler mit der Lautstärke kollidieren. Für weitere Informationen über dieses Debounce-Muster, siehe 1> Kollisionen erkennen1>.

Animation Hinzufügen

Wenn Sie Ihre Erfahrung jetzt spielen würden, würde Ihr TriggerAnimation Skript immer noch nicht in der Lage sein, eine Animation in Reaktion auf die lokale Spieler-Volumen-Kollision zu spielen. Dies liegt daran, dass es auf ein Kind Animation -Objekt mit Animation-AssetID wartet, und dass dieses Animation -Objekt derzeit nicht existiert.

Um eine Animation für das lokale Skript hinzuzufügen, auf die Spieler mit der Lautstärke kollidieren:

  1. In dem Explorer-Fenster , fügen Sie eine neue Animation zu TriggerAnimation hinzu.

    1. Bewegen Sie den Mauszeiger über TriggerAnimation und klicken Sie auf die Schaltfläche ⊕.
    2. Vom Kontextmenü, fügen Sie eine Animation ein.
  2. Wählen Sie das neue Objekt, dann in dem Eigenschaften-Fenster , setzen Sie AnimationID auf die Animations资源ID, die Sie auslösen möchten, wenn Spieler den Volumen berühren. Zum Beispiel, die Gefahrgut-Raumstation -Beispiel verweist auf 1> rbxassetid://37164687741> , um eine Animation eines

  3. Teste deine Erfahrung, um sicherzustellen, dass deine Animation abgespielt wird, wenn Spieler in der Nähe des ersten Dampfes sind.