Spielfigur-Animationen abspielen

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

Spielfigur-Animationen abspielen ist ein wichtiger Teil dessen, was Avatare und nicht spielbare Charaktere (NPCs) ausdrucksstark, realistisch und ansprechend für Ihr Publikum macht. Neben der Bereitstellung von immersiven visuellen Effekten bieten Spielfigur-Animationen den Spielern Feedback zu ihren Aktionen, Anleitungen zur Navigation in der Umgebung und wichtige Informationen über ihren Charakter und andere.

Anhand der Gefährlichen Raumstation .rbxl-Datei als Referenz zeigt Ihnen dieses Tutorial, wie Sie Spielfigur-Animationen mit zwei verschiedenen Techniken abspielen können, einschließlich Anleitungen zu:

  • Austausch der Standard-Animations-Asset-IDs mit Ihren eigenen benutzerdefinierten Animationen.
  • Auslösen von Animationen als Reaktion auf Charakteraktionen im 3D-Raum.

Nachdem Sie dieses Tutorial abgeschlossen haben, werden Sie in der Lage sein, Animationen für eine Vielzahl von Spielsituationen anzupassen.

Standardanimationen ändern

Jeder Charakter mit einem Standard-Humanoid-Objekt, ob es sich um einen vom Spieler gesteuerten Avatar oder einen nicht spielbaren Charakter (NPC) handelt, enthält eine Reihe von Standardanimationen, die abgespielt werden, wann immer der Charakter bestimmte Aktionen im Spiel ausführt, wie z. B. Laufen, Klettern und Springen. Roblox stellt diese Animationen standardmäßig für jedes Spiel ohne zusätzlichen Skriptingaufwand zur Verfügung.

Standard-Fall-Animation
Standard-Schwimm-Animation
Standard-Kletter-Animation

Wenn diese Standardanimationen jedoch nicht den Designanforderungen für die Umgebung, Ästhetik oder die gesamte Erzählung Ihrer Welt entsprechen, können Sie sie durch benutzerdefinierte Animationen ersetzen, die für jeden Spieler gelten, der Ihrem Spiel beitritt.

Um dies zu demonstrieren, lehrt Sie der folgende Abschnitt, wie Sie die Standard-Laufanimation durch einen benutzerdefinierten Laufzyklus aus Charakteranimationen erstellen ersetzen. Mit demselben Verfahren können Sie jede der Standardanimationen durch Ihre eigenen Animations-Asset-IDs ersetzen.

Standard-Lauf-Animation
Benutzerdefinierte Lauf-Animation

Skript erstellen

Jedes Humanoid-Objekt eines Charakters enthält ein Kind-Animator-Objekt, das alle Standardanimationen des Charakters speichert. Um eine dieser Standardanimationen auf neue Asset-IDs festzulegen, müssen Sie ein Skript im ServerScriptService erstellen, damit es die Standardwerte des Animator-Objekts referenzieren und überschreiben kann, sobald die Spieler in das Spiel geladen werden.

Um ein Skript zu erstellen, das die Standardanimations-Asset-IDs referenziert:

  1. Fügen Sie im Explorer-Fenster ein neues Skript zu ServerScriptService hinzu.

    1. Fahren Sie mit der Maus über ServerScriptService und klicken Sie auf die ⊕-Schaltfläche.
    2. Wählen Sie im Kontextmenü ein Skript aus.
  2. Fügen Sie im neuen Skript den folgenden Code ein:

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

Das Skript ResetDefaultAnimations beginnt damit, den Dienst Players abzurufen, der alle Player-Objekte für Spieler enthält, die sich mit einem Server verbinden. Wenn die Charaktere jedes Spielers in das Spiel geladen werden, wartet die Funktion onCharacterAdded, bis sie die Humanoid- und Animator-Objekte des Charakters erkennt.

Wenn es zum ersten Mal ein Animator-Objekt erkennt, gibt das Skript "Animator gefunden!" aus, um Ihnen mitzuteilen, dass das Skript wie beabsichtigt funktioniert.

Asset-ID ersetzen

Jetzt, da Sie wissen, dass Ihr Skript erkennen kann, wann Spieler laden und sich mit dem Server verbinden, können Sie Ihr Skript so modifizieren, dass es speziell die Animations-ID(s) referenziert, die Sie durch Ihre eigenen benutzerdefinierten Animationen ersetzen möchten.

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

CharakteraktionAnimate-Skript-Referenz
LaufenanimateScript.run.RunAnim.AnimationId
GehenanimateScript.walk.WalkAnim.AnimationId
SpringenanimateScript.jump.JumpAnim.AnimationId
Idle

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

FallenanimateScript.fall.FallAnim.AnimationId
Schwimmen

animateScript.swim.Swim.AnimationId

Schwimmen (Idle)

animateScript.swimidle.SwimIdle.AnimationId

KletternanimateScript.climb.ClimbAnim.AnimationId

Um die Standard-Laufanimations-Asset-ID zu ersetzen:

  1. Rufen Sie die Standard-Lauf-Animate-Skript-Referenz auf und ersetzen Sie dann die Asset-ID durch Ihre eigene benutzerdefinierte Animations-Asset-ID. Zum Beispiel verweist das folgende Codebeispiel auf die Laufzyklus-Animation aus Charakteranimationen erstellen.

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animator gefunden!")
    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. Testen Sie Ihr Spiel, um sicherzustellen, dass Ihre benutzerdefinierte Laufanimation die Standardanimation überschreibt.

    1. Wählen Sie Test aus dem Dropdown-Menü und klicken Sie auf die Play-Schaltfläche rechts daneben, um den Test zu starten.

      Testoption im Dropdown-Menü der Testmodi von Studio.
    2. Gehen Sie mit Ihrem Avatar um die Raumstation herum.

Animationen auslösen

Während die vorherige Technik sich darauf konzentriert, Standardanimationen auszutauschen, die automatisch abgespielt werden, wann immer ein Charakter bestimmte Aktionen im Spiel ausführt, können Sie programmatisch Animationen auslösen, um auf jede Charakteraktion im 3D-Raum zu reagieren, wie z. B. das Aufheben eines Gegenstands oder das Erleiden von Schaden durch ein Risiko.

In diesem Beispiel, wenn Spieler die goldene Plattform berühren, lösen sie eine nicht-standardmäßige Tanzanimation des Charakters aus.

Diese Methode zum Abspielen von Animationen ist nützlich, da sie den Spielern sofortiges Feedback darüber gibt, wie sie mit Objekten in ihrer Umgebung interagieren sollten. Um dies zu demonstrieren, zeigt Ihnen der folgende Abschnitt, wie Sie eine Animation auslösen, wann immer Charaktere zu nah an gefährlichen Dampflecks sind, um den Spielern subtil beizubringen, dass sie vermeiden sollten, zu nah an den Wänden zu gehen.

Volumen einfügen

Eine der häufigsten Methoden, um einzigartiges Gameplay-Verhalten auszulösen, besteht darin, Volumen oder unsichtbare Bereiche im 3D-Raum zu verwenden, um zu erkennen, wann Charaktere oder Objekte mit bestimmten Bereichen der Umgebung interagieren. Wenn Sie Volumen mit Skripten kombinieren, können Sie deren Kollisionsfeedback verwenden, um programmatisch Aktionen auszulösen, wie z. B. die Gesundheit des Spielers zu reduzieren oder eine Animation abzuspielen.

Eine weit entfernte Ansicht eines Raums in einem Herrenhaus. Eine Umrisslinie eines Kästchens befindet sich in der Mitte des Raums, um das Volumen zu kennzeichnen, das Gameplay-Ereignisse auslöst.
Das Geheimnis der Duvall Drive verwendet Volumen, um Gameplay-Ereignisse auszulösen, die das visuelle Erscheinungsbild des Raums ändern.

Beim Hinzufügen eines Volumens zu Ihrem Spiel ist es wichtig, es so zu skalieren, dass es nur den Raum abdeckt, den Sie für das Auslösen Ihrer Animation verwenden möchten. Wenn Sie Ihr Volumen zu klein machen, können die Spieler möglicherweise nie mit dem Bereich kollidieren, um die Animation abzuspielen; umgekehrt, wenn Sie Ihr Volumen zu groß machen, wird die Animation abgespielt, bevor die Spieler den Gegenstand oder den interessierenden Bereich erreichen, und sie verstehen möglicherweise nicht, was sie getan haben, um die Animation auszulösen.

Um ein Volumen um einen Dampfleck einzufügen, das eine Animation auslösen wird:

  1. Fügen Sie im Explorer-Fenster ein neues Blockteil hinzu.
  2. Positionieren und skalieren Sie den Block, bis er den Bereich abdeckt, den Sie für das Auslösen Ihrer Animation verwenden möchten.
  3. Im Eigenschaften-Fenster,
    1. Setzen Sie Name auf AnimationDetector.

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

      Eine Umrisslinie eines Blocks ist um einen Dampfauslass sichtbar, um die Position des Volumens zu kennzeichnen.

Skript erstellen

Jetzt, da Sie einen definierten Bereich zum Auslösen Ihrer Animation haben, ist es an der Zeit, ein Skript zu erstellen, das programmatisch erkennt, wann Spieler mit dem Volumen kollidieren. Sie können dann auf Kollisionsereignisse hören, um jede Animation auszulösen, die für Ihre Gameplay-Anforderungen sinnvoll ist.

Zum Beispiel verwendet diese Animationstechnik ein LocalScript anstelle eines Script, um den Spielern sofortiges Feedback zu geben, wenn sie mit dem Volumen kollidieren. Wenn der Server auf die Kollision hören und die Animation abspielen würde, könnte es eine Verzögerung zwischen dem Berühren des Volumens durch den Spieler auf ihrem Client und dem Abspielen der Animation geben, aufgrund der Replikationszeit vom Server zum Client.

Um ein lokales Skript zu erstellen, das erkennt, wann der Charakter des lokalen Spielers das Volumen berührt:

  1. Fügen Sie im Explorer-Fenster ein neues Skript zu StarterCharacterScripts hinzu. Diese Platzierung stellt sicher, dass das Skript und seine Kinder beim Beitritt des Spielers und beim Respawnen ins Spiel geklont werden.

    1. Erweitern Sie StarterPlayer, fahren Sie dann mit der Maus über das Kind StarterCharacterScripts und klicken Sie auf die ⊕-Schaltfläche.
    2. Wählen Sie im Kontextmenü ein LocalScript aus und benennen Sie es um in TriggerAnimation.
  2. Fügen Sie im neuen Skript den folgenden Code ein:

    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 Skript TriggerAnimation beginnt damit, den Dienst Workspace abzurufen, der alle Objekte enthält, die in der 3D-Welt existieren. Dies ist wichtig, da das Skript das Part-Objekt referenzieren muss, das als Ihr Volumen fungiert.

Für jeden Spielercharakter, der ins Spiel geladen oder respawnt wird, wartet das Skript auf:

  • Sein Kind-Animation-Objekt, das Sie im nächsten Abschnitt hinzufügen werden.
  • Die Humanoid- und Animator-Objekte des Charakters.
  • Das Volumenobjekt im Arbeitsbereich mit dem Namen AnimationDetector.

Wenn irgendetwas mit dem Volumen kollidiert, erhält die Touched-Ereignis-Handler-Funktion den ersten Vorfahren, der ein Model ist, was der Charakter sein sollte, wenn das BasePart, das mit dem Volumen kollidiert ist, ein Nachkomme eines Charaktermodells ist. Wenn dies der Fall ist, überprüft die Funktion, ob das Model der lokale Charakter des Spielers ist. Wenn ja, dann:

  • Setzt debounce auf true.
  • Spielt die Animation ab und wartet, bis sie endet.
  • Setzt debounce zurück auf false.

Das Setzen von debounce von false auf true und dann wieder auf false, nachdem die Animation abgespielt wurde, ist ein Entprellmuster, das verhindert, dass die Animation wiederholt ausgelöst wird, während die Spieler kontinuierlich mit dem Volumen kollidieren. Für weitere Informationen zu diesem Entprellmuster siehe Kollisionen erkennen.

Animation hinzufügen

Wenn Sie Ihr Spiel jetzt testen würden, könnte Ihr TriggerAnimation-Skript immer noch keine Animation als Reaktion auf die Kollision des lokalen Spielers mit dem Volumen abspielen. Dies liegt daran, dass es auf ein Kind-Animation-Objekt mit einer Animations-Asset-ID wartet, auf das es verweisen kann, und dieses Animation-Objekt existiert derzeit nicht.

Um eine Animation hinzuzufügen, auf die das lokale Skript verweisen kann, wenn die Spieler mit dem Volumen kollidieren:

  1. Fügen Sie im Explorer-Fenster eine neue Animation zu TriggerAnimation hinzu.

    1. Fahren Sie mit der Maus über TriggerAnimation und klicken Sie auf die ⊕-Schaltfläche.
    2. Wählen Sie im Kontextmenü eine Animation aus.
  2. Wählen Sie das neue Animationsobjekt aus und setzen Sie im Eigenschaften-Fenster die AnimationID auf die Animations-Asset-ID, die Sie auslösen möchten, wenn die Spieler das Volumen berühren. Zum Beispiel verweist das Beispiel der Gefährlichen Raumstation auf rbxassetid://3716468774, um eine Animation eines Charakters abzuspielen, der rückwärts fällt.

  3. Testen Sie Ihr Spiel, um sicherzustellen, dass Ihre Animation abgespielt wird, wenn die Spieler in der Nähe des ersten Dampflecks sind.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.