Animacje postaci do odtwarzania

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Animacje postaci do gry są ważną częścią tego, co sprawia, że awatary i niemożliwe postacie (NPC) są ekspresyjne, realistyczne i angażujące dla widowni. Oprócz dostarczania immersyjnych wizualizacji, animacje postaci dają graczom wzgląd na ich działania, kierunki środowiskoi ważne informacje o ich postaci i innych.

Używając Hazardous Space Station.rbxl pliku jako referencji, ten samouczek pokazuje, jak grać animacje postaci używając dwóch różnych technik, w tym instrukcje na temat:

  • Wymiana standardowych animacji postaci z własnymi animacjami niestandardowymi.
  • Wyzwywanie animacji w odpowiedzi na działania postaci w przestrzeni 3D.

Po ukończeniu tego samouczka będziesz posiadać umiejętności do dostosowywania animacji dla szerokiej gamy sytuacji gry.

Zmiana animacji domyślnych

Każdy postać z domyślnym obiektem Humanoid, czy to gracz kontrolowany awatar lub nieskategoryzowany postać (NPC), włącza zestaw animacji domyślnych, które odtwarzane są za każdym razem, gdy postać wykonuje określone akcje w grze, takie jak bieganie, wspinaczka i skaczanie. Roblox dostarcza te anim

Domyślna animacja spadku
Domyślna animacja pływania
Domyślna animacja wspinaczki

Jeśli jednak te domyślne animacje nie spełniają wymagań projektowych dla środowisko, estetyki lub ogólnej fabuły twojego świata, możesz je wymienić na niestandardowe animacje, które stosują się do każdego gracza, który dołącza do twojego doświadczenia. Ta technika projektowania gry może pomóc twoim postaciom i doświadczeniom poczuć bardziej osobisty, angażujący i imersyjne.

Aby pokazać, następny sekcja nauczy cię, jak wymienić animację spaceru domyślną z animacją spaceru niestandardowego z tworzenia animacji postaci . Używając tego samego procesu, możesz wymienić dowolną z animacji domyślnych z własnymi animacjami postaci.

Domyślna animacja chodzenia
Animacja spaceru niestandardowa

Utwórz Skrypt

Każdy postać Humanoid obiekt zawiera dziecko Animator obiekt, który przechowuje wszystkie domyślne animacje postaci. Aby ustawić którekolwiek z tych domyślnych animacji na nowych przypisanych ID, musisz utworzyć skrypt w

Aby stworzyć skrypt, który będzie odnosił się do domyślnych zasobów animacji:

  1. W oknie Explorer, dodaj nowy skrypt do ServerScriptService.

    1. Przytrzymaj ServerScriptService i kliknij przycisk ⊕.
    2. Z menu kontekstowego wpisz Skrypt .
  2. W nowym skrypcie wklej następujący kod:


    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)

Skrypt ResetDefaultAnimations zaczyna się od uzyskania usługi Players, która zawiera wszystkie Player obiekty dla graczy, gdy się połączą z serwerem. Gdy każdy z charakterów gracza załadow

Gdy wykrywa po raz pierwszy obiekt Animator , skrypt wtedy drukuje "Animator znaleziony!" aby poinformować, że skrypt działa tak, jak zamiast.

Zastąp AssetID

Teraz, gdy wiesz, że twój skrypt jest w stanie wykryć, gdy gracze ładową i połączą się z serwerem, możesz zmodyfikować swój skrypt, aby w szczególności odnieść się do identyfikatora animacji, którą chcesz wymienić z własnymi animacjami niestandardowymi.

Poniższy tabela zawiera wszystkie domyślne animacje postaci, które możesz wezwieć i zastąpić w obiekcie Animator. Uwaga, że Idle ma dwie wersje, które możesz zaprogramować, aby grać częściej lub rzadziej.

Akcja postaciOdnośnik animacji skryptu
Biegnij animateScript.run.RunAnim.AnimationId
Chodzenie animateScript.walk.WalkAnim.AnimationId
Skoczka animateScript.jump.JumpAnim.AnimationId
Bezczynność

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

Upadek animateScript.fall.FallAnim.AnimationId
Pływanie

animateScript.swim.Swim.AnimationId

Pływanie (nieaktywne)

animateScript.swimidle.SwimIdle.AnimationId

Wejdź do góry animateScript.climb.ClimbAnim.AnimationId

Aby zastąpić domyślną animację chodzenia:

  1. Wezwij domyślną animację wstępnej animacji, a następnie zastąp identyfikator pracy własnym niestandardowym animacją własności. Na przykład poniższy kod przywołuje animację cyklu bicia z Tworzenie animacji postaci.


    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. Sprawdź swoją grę, aby upewnić się, że twoja niestandardowa animacja chodzenia przeważa nad animacją domyślną.

    1. W menu Kliknij przycisk Graj. Studio wchodzi w tryb testu.

      A Studio view of the Home tab with the Play button highlighted.
    2. Chodź wokół stacji kosmicznej z swoim awatarem.

Wyzwij animacje

Podczas gdy poprzednia technika koncentruje się na wymianie domyślnych animacji, które automatycznie odtwarzają się, gdy postać wykonuje określone w doświadczeniu działania, możesz programowo zainicjować animacje do odtwarzania w odpowiedzi na dowolną akcję postaci w przestrzeni 3D, taką jak podniesienie przedmiotu lub otrzymanie obrażeń od niebezpieczeństwa.

W tym przykładzie, gdy gracze dotykają złotej platforma, to wywołuje animacjatańca postaci nie domyślnej.

Ten sposób gry animacji jest użyteczny, ponieważ daje graczom natychmiastową informację o tym, jak powinni interagować z obiektami w swoim środowisko. Aby pokazać, następny sekcja pokazuje, jak aktywować animację, gdy gracze są zbyt blisko niebezpiecznych wycieków pary wodnej jako sposób subtelnego nauczania graczy, aby uniknąć chodzenia zbyt blisko ścian.

Utwórz objętość

Jednym z najczęstszych sposobów na uruchomienie unikalnego zachowania gry jest użycie głośników lub niewidocznych obszarów w przestrzeni 3D, aby wykryć, kiedy postacie lub obiekty interagują ze specjalnymi obszarami środowisko. Gdy połączysz głośniki z skryptami, możesz użyć ich sygnałów kolizji, takich jak zmniejszenie zdrowia gracza lub odtwarzanie animacja

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.
Tajemnica Duvall Drive używa głośników, aby wywołać wydarzenia gry, które zmieniają wygląd wizualny pokoju.

Podczas dodawania do swojego doświadczenia warto skalować go, aby pokrył tylko przestrzeń, którą chcesz zesynchronizować z animacją. Jeśli uczynisz swoją wielkość zbyt małą, gracze mogą nigdy nie uderzyć z obszarem, w którym chcesz uruchomić animację; natomiast, jeśli uczynisz swoją wielkość zbyt dużą, animacja zostanie uruchomiona przed tymi

Aby wstawić głośnik wokół wycieku pary, który spowoduje animacja:

  1. W oknie Explorer dodaj nową część bloku.
  2. Pozycjonuj i zmniejsz blok, aż pokryje obszar, który chcesz uruchomić animacja.
  3. W Oknie Proprietści ,
    1. Ustaw Nazwę na AnimationDetector .

    2. Ustaw Przezroczystość na 1, aby renderować blok niewidzialny.

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

Utwórz Skrypt

Teraz, gdy masz zdefiniowaną region dla uruchomienia twojej animacja, nadszedł czas na stworzenie skryptu, który programowo wykrywa, gdy gracze kolidują z głośnikiem. Następnie możesz słuchać wydarzeń kolidencji, aby uruchomić dowolną animację, która ma sens dla twoich wymagań w grze.

Na przykład, ta technika animacji używa LocalScript zamiast Script , aby zapewnić graczom natychmiastową opinię, gdy kolidują z głośnikiem. Jeśli serwer słuchałby do kolizji i odtwarzałby animacja, może nastąpić opóźnienie między graczem dotykającym głośnika na swoim kliente i widzącym animację grają

Aby stworzyć lokalny skrypt, który wykryje, gdy lokalny gracz dotka głośnika:

  1. W oknie Explorer , dodaj nowy skrypt do StarterCharacterScripts . Ta lokalizacja gwarantuje, że skrypt i jego dzieci kopiują się w graczu na dołączenie i gdy powracają do doświadczenia.

    1. Rozwiń StarterPlayer , a następnie kliknij jego dziecko StarterCharacterScripts i kliknij przycisk ⊕.
    2. Z menu kontekstowego wpisz LokalnySkrypt i zmień jego nazwę TriggerAnimation .
  2. W nowym skrypcie wklej następujący kod:


    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)

Skrypt TriggerAnimation zaczyna się od uzyskania usługi Workspace, która zawiera wszystkie obiekty, które istnieją w świecie 3D. Jest to ważne, ponieważ skrypt musi odnieść się do obiektu Part, który działa jako twój głośnik.

Dla każdego postaci gracza, który ładowany lub odchodzi z powrotem do doświadczenia, skrypt czeka na:

  • Jego dziecko Animation obiekt, który dodasz w następnym sekcji.
  • Obiekty Humanoid i Animator postaci.
  • Przedmiot Volume w przestrzeni roboczej nazywającym się AnimationDetector .

Gdy cokolwiek koliduje z volume, funkcja Touched wskaźnika zdarzeń otrzymuje pierwszy przodkowy, który jest Model, co powinno być znakiem, jeśli BasePart zderzy się z volume. Jeśli jest, funkcja wt

  • Ustawia odwrócenie do true .
  • Gra i czeka na kończyćanimacji.
  • Ustawia odwrócenie do false .

Ustawienie odwrócenia od false do true aby code grać ponownie po zakończeniu animacji jest wzorem debounce, który zapobiega animacji prawie natychmiastowego uruchomienia animacji, gdy gracze nieustannie kolidują z głośnikiem. Aby uzyskać więcej informacji o tym wzorcu debounce, zobacz 4> Wykrywanie kolidji4>.

Dodaj Animację

Jeśli zagrałbyś swoją doświadczenie teraz, twoje TriggerAnimation skryptu nadal nie będzie w stanie odtwarzyć animacji w odpowiedzi na lokalną kolizję gracza. To jest, ponieważ czeka na dziecko Animation z zasobem animacji, który może zeszyfrować, i że ten obiekt Animation nie istnieje obecnie.

Aby dodać animację dla lokalnego skryptu do odniesienia, gdy gracze uderzają z głośnikiem:

  1. W oknie Explorer , dodaj nową animację do TriggerAnimation .

    1. Przytrzymaj Animacja spustoszenia i kliknij przycisk ⊕.
    2. Z menu kontekstowego wpisz Animację .
  2. Wybierz nowy obiekt animacji, a następnie w oknie Właściwości ustaw AnimationID na animację asetID, którą chcesz uruchomić, gdy gracze dotykają głośnika. Na przykład, przykład Hazardous Space Station odnosi się do 2> rbxassetid://37164687742> , aby odt

  3. Sprawdź swoją animację, aby upewnić się, że gra się ładuje, gdy gracze są blisko pierwszej nieszczelności.