본문 바로가기

기초코딩강좌/유니티 기초 강좌

14. 애니메이션 기초

반응형
  1. 애니메이션 기초
    애니메이션은 게임 개발에서 물체의 움직임을 부드럽게 표현하기 위한 중요한 개념입니다. Unity에서는 Animator 컴포넌트를 통해 오브젝트의 애니메이션을 제어합니다. 아래는 Unity에서의 애니메이션 기초에 대한 간단한 설명입니다.

    1. Animator 컴포넌트:
    • 추가 방법:
      • Unity 에디터에서 오브젝트를 선택한 후, 상단 메뉴에서 "Window" > "Animator"를 선택하여 Animator 창을 열 수 있습니다.
      • Animator 창에서 "Create" 버튼을 사용하여 Animator 컴포넌트를 생성합니다.
    2. 애니메이션 클립:
    • 추가 방법:
      • Animator 창에서 "Add Property" 버튼을 클릭하여 애니메이션을 만들고자 하는 속성을 선택합니다. (예: Transform의 Position, Rotation 등)
      • 이후 "Add Curve"를 통해 해당 속성의 애니메이션 클립을 생성합니다.
    3. 상태와 전환:
    • 상태(State):
      • Animator 창에서 "Animator" 창 상단의 "Layer" 영역에서 상태를 추가하고 설정합니다.
      • 각 상태는 특정 애니메이션 클립과 관련됩니다.
    • 전환(Transition):
      • Animator 창에서 상태 간의 전환을 설정합니다.
      • 전환 조건을 설정하여 특정 조건이 충족될 때 다른 상태로 전환될 수 있습니다.
    4. 파라미터(Parameter):
    • 추가 방법:
      • Animator 창에서 "Parameters" 영역에서 파라미터를 추가합니다. (Bool, Float, Int 등)
      • 스크립트에서 이 파라미터 값을 변경하여 애니메이션을 제어할 수 있습니다.
    5. 애니메이션 제어 스크립트:
    • 애니메이션을 스크립트로 제어하려면 Animator 컴포넌트의 인스턴스를 스크립트에서 참조하여 파라미터 값을 변경하거나 특정 애니메이션을 트리거할 수 있습니다.
    using UnityEngine;
    
    public class AnimationController : MonoBehaviour
    {
        private Animator animator;
    
        void Start()
        {
            // Animator 컴포넌트 참조
            animator = GetComponent<Animator>();
        }
    
        void Update()
        {
            // 예시: 스페이스바를 누르면 "Jump" 애니메이션을 재생
            if (Input.GetKeyDown(KeyCode.Space))
            {
                animator.SetTrigger("JumpTrigger");
            }
        }
    }​

    6. 애니메이션 이벤트:
    • 이벤트 추가:
      • 애니메이션 클립에서 "Add Event" 버튼을 사용하여 특정 시간에 이벤트를 추가할 수 있습니다.
      • 이벤트는 스크립트에서 정의한 메서드를 호출하거나 다른 작업을 수행할 수 있는 기능을 제공합니다.
    이러한 기본 개념을 기반으로 Unity에서는 복잡한 애니메이션 시스템을 구축할 수 있습니다. Unity의 Animator 및 Animation 창은 강력한 애니메이션 제작 도구로, 간단한 움직임부터 복잡한 캐릭터 애니메이션까지 다양한 요구 사항을 처리할 수 있습니다.




  2. 애니메이션 콘트롤러
    애니메이션 콘트롤러(Animation Controller)는 Unity에서 애니메이션을 제어하는 데 사용되는 중요한 요소 중 하나입니다. 애니메이션 콘트롤러는 Animator 컴포넌트와 함께 작동하여 다양한 애니메이션 클립 및 상태 간의 전환을 관리합니다.
    1. Animator 컴포넌트:
      • 게임 오브젝트에 Animator 컴포넌트를 추가합니다.
      • Animator 창을 통해 애니메이션 콘트롤러를 만들고 구성합니다.
    2. 애니메이션 콘트롤러 생성:
      • 프로젝트 창에서 "Assets" 폴더 내에 우클릭하고 "Create" > "Animator Controller"를 선택하여 애니메이션 콘트롤러를 생성합니다.
      • 생성된 애니메이션 콘트롤러에는 Animator 창이 자동으로 열립니다.
    3. 애니메이션 콘트롤러 설정:
      • Animator 창에서 각 상태(State) 및 전환(Transition)을 설정합니다.
      • 각 상태는 특정 애니메이션 클립과 연결되어 있습니다.
      • 전환 조건을 설정하여 상태 간의 전환을 제어합니다.
    4. 파라미터(Parameter) 추가:
      • Animator 창의 "Parameters" 영역에서 필요한 파라미터를 추가합니다. (예: bool, float, int)
      • 파라미터는 스크립트에서 애니메이션을 제어하는 데 사용됩니다.
    5. 스크립트에서 애니메이션 제어:
      • C# 스크립트를 사용하여 애니메이션 콘트롤러의 파라미터 값을 변경하거나 특정 애니메이션을 트리거할 수 있습니다.
    using UnityEngine;
    
    public class AnimationControllerScript : MonoBehaviour
    {
        private Animator animator;
    
        void Start()
        {
            // Animator 컴포넌트 참조
            animator = GetComponent<Animator>();
        }
    
        void Update()
        {
            // 예시: 스페이스바를 누르면 "Jump" 애니메이션을 재생
            if (Input.GetKeyDown(KeyCode.Space))
            {
                // "Jump" 트리거를 설정하여 애니메이션을 재생
                animator.SetTrigger("Jump");
            }
        }
    }​

    이러한 구성을 통해 애니메이션 콘트롤러를 사용하여 게임 오브젝트의 애니메이션을 제어할 수 있습니다. 애니메이션 콘트롤러는 복잡한 애니메이션 시스템을 쉽게 구축할 수 있도록 도와주는 강력한 도구입니다.


  3. 트랜지션과 애니메이션 이벤트
    Unity에서 애니메이션 콘트롤러를 사용할 때, 트랜지션(Transition)과 애니메이션 이벤트(Animation Event)는 애니메이션을 더욱 효과적으로 제어하고 상호작용할 수 있게 해줍니다.

    1. 트랜지션(Transition)
    트랜지션은 애니메이션 콘트롤러에서 한 상태(State)에서 다른 상태로 전환하는 것을 의미합니다.
    • 트랜지션 설정:
      1. Animator 창에서 전환하려는 상태로 이동합니다.
      2. "Add Transition" 버튼을 사용하여 새로운 전환을 추가합니다.
      3. 전환된 상태를 설정하고 전환 조건을 정의합니다.
    • 전환 조건:
      • 전환을 시작하기 위해 필요한 조건을 설정합니다. 예를 들어, 특정 파라미터의 값이 특정 조건을 만족하면 전환될 수 있습니다.
    2. 애니메이션 이벤트(Animation Event):
    • 애니메이션 이벤트 추가:
      1. 애니메이션 클립을 선택합니다.
      2. Animation 창에서 "Add Event" 버튼을 사용하여 이벤트를 추가합니다.
      3. 이벤트의 프레임과 함수를 지정합니다.
    • 스크립트에서 처리:
      • 스크립트에서는 해당 함수를 정의하여 애니메이션 이벤트에 응답합니다.
using UnityEngine;

public class AnimationEventExample : MonoBehaviour
{
    private Animator animator;

    void Start()
    {
        animator = GetComponent<Animator>();
    }

    // 애니메이션 이벤트에서 호출할 함수
    void PlayFootstepSound()
    {
        // 풋스텝 사운드를 재생하는 등의 동작 수행
        Debug.Log("Footstep sound played!");
    }

    void Update()
    {
        // 예시: 스페이스바를 누르면 "Attack" 애니메이션을 재생
        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.SetTrigger("Attack");
        }
    }
}

 

위의 코드에서 PlayFootstepSound 함수는 애니메이션 이벤트에서 호출됩니다. 이를 통해 애니메이션이 특정 프레임에서 동작할 때 스크립트에서 원하는 동작을 수행할 수 있습니다.

 

트랜지션과 애니메이션 이벤트를 효과적으로 사용하면 애니메이션을 더욱 동적이고 상호작용적으로 만들 수 있습니다.

728x90
반응형

'기초코딩강좌 > 유니티 기초 강좌' 카테고리의 다른 글

16. 애니메이션 블렌딩  (0) 2024.01.05
15. 메카님 시스템  (1) 2024.01.04
13. 충돌 감지와 반응  (0) 2024.01.02
12. 리지드바디와 콜라이더  (1) 2024.01.01
11. 프리팹 소개  (0) 2023.12.31