Tworzenie animacji 2D w Unity

Aby utworzyć animacje 2D w Unity, programiści mogą użyć wbudowanego okna animacji i komponentu Unity Animator. Oto przewodnik krok po kroku, jak zacząć.

Konfiguracja projektu

  • Otwórz Unity i utwórz nowy projekt 2D lub otwórz istniejący.
  • Jeśli rozpoczynasz nowy projekt, ustaw szablon projektu jako 2D.

Importowanie zasobów Sprite

  • Duszki można utworzyć w Unity za pomocą Edytora Sprite lub zaimportować z zewnętrznych plików graficznych, takich jak PNG lub JPEG.
  • Aby utworzyć duszki w Unity, przejdź do menu Assets, wybierz opcję Utwórz i wybierz Sprite lub Sprite Renderer. Można wtedy narysować lub zaimportować grafikę duszka.

Konfigurowanie animacji Sprite

  • Gdy duszki będą gotowe, wybierz zasób duszka w oknie Projektu.
  • Upewnij się, że w oknie Inspektora typ tekstury jest ustawiony na 'Sprite (2D and UI)'. Jeśli nie, zmień go na 'Sprite (2D and UI)'.
  • Kliknij zasób duszka w oknie Projektu, aby otworzyć go w Edytorze Sprite.
  • Użyj Edytora Sprite, aby zdefiniować poszczególne klatki animacji. W razie potrzeby duszka można podzielić na wiele obrazów podrzędnych. Edytor umożliwia również modyfikację punktu obrotu każdej klatki, aby kontrolować położenie duszka.
  • Zapisz zmiany wprowadzone w Edytorze Sprite.

Tworzenie animacji przy użyciu okna animacji

  • Aby otworzyć okno animacji, przejdź do 'Window -> Animation'.
  • W oknie Animacja kliknij przycisk Utwórz, aby utworzyć nowy klip animacji.
  • Wybierz klip animacyjny w oknie Projektu, a jego właściwości pojawią się w oknie Inspektora.
  • W oknie Inspektora można ustawić długość klipu animacji, częstotliwość próbkowania i inne właściwości.
  • Aby utworzyć klatki kluczowe, przesuń głowicę odtwarzania w oknie Animacja na określony czas i zmodyfikuj właściwości duszka (np. położenie, skalę, obrót itp.) w oknie Scena lub Hierarchia.
  • Dodawaj klatki kluczowe w różnych momentach, aby uzyskać płynną animację. Unity automatycznie interpoluje wartości pomiędzy klatkami kluczowymi.

Konfigurowanie animatora

  • Wybierz obiekt duszka w oknie Scena lub Hierarchia.
  • W oknie Inspektora kliknij przycisk Dodaj Komponent i wyszukaj "Animator", aby dodać komponent Animator do obiektu.
  • Kliknij przycisk Utwórz w komponencie Animator, aby utworzyć nowy zasób Animator Controller.
  • Przypisz nowo utworzony Kontroler Animatora do pola Kontroler komponentu Animator.

Konfigurowanie kontrolera animatora

  • Kliknij dwukrotnie nowo utworzony zasób Animator Controller, aby otworzyć go w oknie Animatora.
  • W oknie Animatora znajduje się wykres Kontrolera Animatora, który przedstawia przepływ animacji.
  • Kliknij prawym przyciskiem myszy w oknie Animatora i wybierz 'Create State -> From New Clip' lub 'From Sprite Renderer', aby utworzyć stany animacji.
  • Przeciągnij i upuść wcześniej utworzone klipy animacyjne w oknie Animacja na odpowiednie stany animacji.
  • Twórz przejścia pomiędzy stanami animacji, klikając stan i przeciągając strzałkę do innego stanu. Możliwe jest dostosowanie warunków przejścia, takich jak czas, wartości parametrów lub zdarzenia.
  • Możliwe jest dodanie parametrów sterujących przejściami, takich jak boole, int lub wyzwalacze. Na przykład może istnieć parametr bool o nazwie "IsRunning", który wyzwala przejście ze stanu animacji bezczynności do stanu animacji działającej.

Odtwarzanie animacji

  • Wybierz obiekt duszka w oknie Scena lub Hierarchia.
  • W komponencie Animator w oknie Inspektora przeciągnij utworzony zasób Animator Controller na pole Kontroler.
  • Naciśnij przycisk Play w oknie Animacja, aby przetestować i wyświetlić podgląd animacji.

Programowe kontrolowanie animacji

  • Programowe sterowanie animacjami wymaga dostępu do komponentu Animator z skryptu.
  • W skrypcie utwórz zmienną typu Animator i użyj 'GetComponent<Animator>()', aby uzyskać odwołanie do komponentu Animator dołączonego do obiektu sprite.
  • Można następnie użyć funkcji i właściwości Animatora do wyzwalania przejść, ustawiania wartości parametrów lub sterowania odtwarzaniem animacji. Na przykład wywołanie animator.SetBool("IsRunning", true) spowoduje uruchomienie uruchomionej animacji.
using UnityEngine;

public class AnimationController : MonoBehaviour
{
    private Animator animator;

    private void Start()
    {
        // Get a reference to the Animator component
        animator = GetComponent<Animator>();
    }

    private void Update()
    {
        // Check for input or condition to trigger animations
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // Trigger a jump animation
            animator.SetTrigger("Jump");
        }

        float moveInput = Input.GetAxis("Horizontal");
        animator.SetFloat("Speed", Mathf.Abs(moveInput));

        // Check if the character is grounded
        bool isGrounded = IsGrounded();

        // Set the "IsGrounded" parameter in the Animator
        animator.SetBool("IsGrounded", isGrounded);

        if (isGrounded && Input.GetKeyDown(KeyCode.C))
        {
            // Trigger a crouch animation
            animator.SetBool("IsCrouching", true);
        }

        if (isGrounded && Input.GetKeyUp(KeyCode.C))
        {
            // Stop the crouch animation
            animator.SetBool("IsCrouching", false);
        }
    }

    private bool IsGrounded()
    {
        // Implement your own logic to check if the character is grounded
        // For example, you can use raycasting or collision detection
        // and return true if the character is touching the ground
        // and false otherwise.
        return false;
    }
}

Wniosek

To jest podstawowy przegląd tworzenia animacji 2D w Unity przy użyciu wbudowanych narzędzi. Unity obsługuje także bardziej zaawansowane techniki, takie jak używanie arkuszy ikonek, kinematyka odwrotna (IK) i niestandardowa animacja skryptów behaviours. Przeglądaj te opcje w oparciu o konkretne wymagania i złożoność danych animacji.

Sugerowane artykuły
Wprowadzenie do systemu animacji Unity
Tworzenie gry Screamer w Unity
Tworzenie gry inspirowanej zabawą Poppy w Unity
Tworzenie mobilnej gry typu horror w Unity
Tworzenie izometrycznej gry RPG w Unity
Tworzenie strzelanki z widokiem z góry w Unity
Jak przypisać kamerę do skryptu w Unity