본문 바로가기
Unity 기초

풍선을 지켜라 - 애니메이션 기능 만들기

by 맛밤도토리 2024. 1. 4.

★ 학습 목표 ★

1. 풍선 터지는 애니메이션 만들기

2. 애니메이션 실행 순서 정하기

3. 애니메이션 실행 시점 구현하기

4. 게임 오버 시 시간 멈추기

 

 

 

1. 풍선 터지는 애니메이션 만들기

:  Assets → Animation → Create → Animation 생성 (파일명 : balloon_die)

 

1) balloon_die 에 애니메이션 추가하기

: balloon_die 애니메이션을 클릭해보면 balloon_idle 애니메이션을 수정할 수 있게 되어 있다.

: 지금은 balloon_die 애니메이션을 수정해야 하기 때문에

  balloon_idle 을 클릭 → Create New Clip → balloon_die Animation 파일선택 을 진행 한다.

 

 

2) 애니메이션 만들기

: Preview 오른쪽 빨간색 점 클릭 → 원하는 시간대를 클릭 → balloon Inspector 에서 원하는 색상과 크기로 변경

 

 

 

2. 애니메이션 실행 순서 정하기

: 풍선을 지켜라는 애니메이션이 [기본 애니메이션] 과 [터지는 애니메이션] 2가지가 있기 때문에 애니메이션 실행 순서를 정해줘야 한다.

 

 Assets → Animation → balloon 클릭

 

위의 경로대로 balloon 을 클릭 했다면, Base Layer 라는 창이 출력되었을 것이다.

 

Base Layer 에서 Entry(시작 상태) 가 balloon_idle 애니메이션과 화살표로 연결되어 있는 상태이다.

* 현재 상태 설명 : "게임을 시작하면 balloon_idle 애니메이션을 실행한다." 는 의미이다.

 

게임 오버가 되면 balloon_die 애니메이션이 출력되어야 하기 때문에 화살표가 balloon_idle 에서 balloon_die 로 넘어가야한다.

 

balloon_idle 오른쪽 버튼 클릭 → Make Transition → 화살표를 balloon_die 로 연결

 

 

 

3. balloon_die 애니메이션 실행 시점 구현하기

: balloon_die 애니메이션은 게임 오버가 되었을 때 애니메이션을 실행할 것이다.

: 그런데 게임 오버가 된 시점이 언제인지 알아야 하기 때문에 실행 시점을 추가해줘야 한다.

 

Animator 창에서 Parameters 의 (+) 키를 클릭하여 Bool 을 추가 (파일명 : isDie)

 

 

1) balloon_die 애니메이션 기능 추가하기

: balloon_die를 이어주는 화살표를 클릭하면 balloon_die 의 Inspector 가 출력된다.

 

  ① Has Exit Time 체크 해제하기

    : Has Exit Time 은 balloon_idle 에서 balloon_die 로 넘어갈 때 딜레이가 있는지에 대한 처리를 말한다.

      풍선을 지켜라는 게임 오버 시 바로 풍선이 터져야 하기 때문에 딜레이가 필요 없어서 해당 기능은 체크 해제한다.

 

  ② Conditions

    : Conditions 는 balloon_die 애니메이션이 balloon_idle 에서 언제 넘어가야 하는지 시기를 알려주는 것을 말한다.

      isDie 가 true 일 때, 넘어가도록 (+) 를 눌러서 추가한다.

[반영된 Inspector 화면]

 

 

2) balloon_die 애니메이션 코드 작성하기

: 게임 오버가 되면 balloon_die 의 애니메이션이 실행되도록 코드를 작성해야한다.

: gameManager Script 에서 anim 라는 변수를 선언한 뒤, gameManager Inspector 에서 Hierarchy 에 있는 balloon 을 드래그하여 넣어준다.

 

[gameManager C# Script]

public Animator anim;

public void gameOver ( )
{
    anim.SetBool ("isDie" , true);
}

[설명]
  public Animator anim;  
: anim 라는 애니메이션을 gameManager 에서 사용하기 위해 선언한다.

  anim.SetBool ("isDie" , true);  
: 게임 오버가 되면 isDie 를 true 로 변경해준다.
 (이 때, SetBool 은 isDie 를 Unity 에서 Bool 로 만들어줬기 때문에 SetBool 을 사용한다.)