Chapter 6-6. 애니메이션 : Event

Date:     Updated:

카테고리:

태그:

인프런에 있는 Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click

Chapter 6. 애니메이터

🚀 Animation Event

image

  • 프레임 바로 아랫 줄이 애니메이션 이벤트 줄이다. 이 곳에 우클하거나 혹은 동그라미 친 곳을 통해 애니메이션 이벤트를 추가할 수 있다.
  • 파란게 현재 선택된 애니메이션 이벤트다.

애니메이션의 길이 중에서 어떤 특정 프레임 지점에 이벤트를 생성하면 그 시점에 이벤트를 유니티 전체에 뿌리게 된다.

  • 언리얼의 노티파이와 비슷
  • 콜백 형식으로 이 이벤트를 받아 어떤 기능을 처리하게 하면 된다.
  • 애니메이션의 어떤 정확한 타이밍에 이벤트가 뿌려지면 코드에서도 이 이벤트가 호출된다는 것을 알아야 한다.

예를 들어 특정 시점에 효과음 재생, 공격 애니메이션에서 딱 내리치는 시점에서 데미지 입혀지게 하거나 걷는 애니메이션에서 발자국이 닿을 때만 뚜벅뚜벅 소리 내게 하거나 등등 이런 애니메이션의 특정 지점에서 어떤 기능을 처리하고 싶을 때 애니메이션 이벤트를 사용한다.

image

이 애니메이션이 A 라는 오브젝트에 적용되는 애니메이션이라면, A 에 컴포넌트로서 붙어있는 모든 C# 스크립트들의 함수가 이 선택한 애니메이션 이벤트의 Function 목록에 뜨게 된다.

    void TestMyFirstAnimationEvent()
    {
        Debug.Log("Event Received 1");
    }

    void TestMySecondAnimationEvent()
    {
        Debug.Log("Event Received 2");
    }

이렇게 두 가지 함수를 작성했다고 가정하면

image

이렇게 애니메이션 이벤트의 함수 목록에 위 함수 두 가지가 생긴 것을 확인할 수 있다. A() 라는 함수를 등록했다면 애니메이션의 이 시점이 재생될 때쯤에는 A 이벤트가 전체에 뿌려지고 이를 받아 A() 함수를 실행하게 한다.

image

기존에 이미 만들어져있는 모델 애니메이션에도 이벤트를 추가할 수 있다.

설정하고자 하는 애니메이션 에셋을 누르고 Animation 탭을 누르면 아래쪽에 Events가 있는데 여기서 애니메이션의 특정 지점에서 이벤트를 뿌릴 수 있다! 예를 들어 위와 같이 저 파란색 지점에서 OnRunEvent 라는 이벤트를 뿌리고 정수 3과 문자열 안녕(녕이 지워졌네;)를 인수로 같이 뿌리게 된다.

    void OnRunEvent(int a)
    {
        Debug.Log(a);
    }

    void OnRunEvent(string str)
    {
        Debug.Log(str);
    }

위 애니메이션이 적용되는 오브젝트의 C# 스크립트에 이런 함수를 만들어주면 위 OnRunEvent 이벤트를 받을 수 있게 된다. 인수도 받을 수 있다. 첫 번째 함수는 3 인수를 받아 실행될 것이고 두 번째 함수는 안녕 인수를 받아 실행될 것이다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Unity Lesson 2 카테고리 내 다른 글 보러가기

댓글 남기기