GameDevelop/Unity기초쌓기

[Unity] 풍선 터지는 애니메이션 추가

도도돋치 2025. 4. 6. 20:24
Contents 접기
728x90

Balloon Die생성

Animatinos폴더 아래의 Balloon_Idle 더블 클릭

Balloon게임 오브젝트 클릭 

[Animation창이 안뜨는 경우]
Window > Animation > Animation 클릭하면 창이 뜬다.

 

Animation창에서 Animation 이라고 되어있는 글씨 밑에 Balloon_Idle를 클릭하고, Create New Clip을 눌러준다.

Animations폴더 선택후 이름을 Balloon_Die로 하여 생성한다.

 

이렇게 하면 새로운 Balloon_Die 애니메이션 창으로 연결된다. 

녹화버튼을 누르고 프레임을 20정도로 옮겨준 후 아래와 같이 설정한다.

[Color] (255,0,0,125)
[Scale] x:2, Y:2

그리고 Balloon_Die의 inspector에서 Loop Time을 꺼준다. 

 

Ballon Animator편집

Animations폴더 > Balloon더블클릭하면 아래와 같이 Animator이 켜진다. 

* 이동시킬 때는 Alt를 누른 상태에서 왼쪽 마우스버튼으로 움직이면 된다.


확인해보면 Ballon_Idle이 기본적으로 실행되고 있다. 

Balloon_Die로도 이동해야 하기때문에 Balloon_Idle에서 우클릭 > Make Transition > Balloon_Die에 연결해준다.

 

Animator의 Parameters를 클릭한 후 +버튼을 눌러준 후 Bool을 클릭, 이름을 isDie로 바꿔준다.


Balloon_Idle에서 Ballon_Die사이의 화살표를 클릭하고 Conditions의 +버튼을 눌러 isDie가 true일 때 화살표가 실행될 수 있도록 설정한다.

Has Exit Time 체크를 해제해준다. (언제든지 다음 애니메이션으로 넘어가겠다는 뜻)


Setting의 Transition Duration값을 0으로 바꿔준다. 

 

이제 GameOver가 됐을때 Balloon_Die 애니메이션으로 이동할 수 있게끔, Gameover가 됐을 때 애니메이션을 실행해보자.

 

GameOver애니메이션 실행

애니메이션을 바꿔주기 위해서는 Animator에 접근을 해야한다. 

-> Balloon오브젝트 Inspector의 Animator을 가져와야 한다.

GameManager Script
public Animator anim;

 

GameOver함수에 아래의 코드를 추가한다. 

anim.SetBool("isDie", true);  //키값, 내가 주고싶은 자료값

📌 트리거를 해주는 것=값을 바꿔주는 것=Transtion이 동작하게끔 해주는 기능 ->setBool 

 

유니티로 돌아와서 GameManager오브젝트의 Anim에 Balloon오브젝트를 넣어준다. 

 

애니메이션을 작동하는데 걸리는 시간

하지만 위코드만 작성시에 애니메이션이 작동하지 않는다. 그 이유는,

public void GameOver()
    {
        anim.SetBool("isDie", true);  //키값, 내가 주고싶은 자료값 

        Time.timeScale = 0.0f;
    }

GameOver()함수가 호출하고 isDie값을 true로 바꿔준 뒤 타임을 바로 0으로 만들어 버렸기 때문이다.

그래서 시간이 아예 멈춰버려 Animation도 시간이 흐르지 않는 것이다. 

 

따라서 timeScale를 0으로 만들어주는 로직을 살짝 딜레이 시켜야 한다. -> 딜레이 함수 Invoke사용

time을 0으로 만드는 코드를 함수로 빼주고 

void TimeStop()
{
    Time.timeScale = 0.0f;
}

Invoke함수를 추가하여 시간 멈춤에 딜레이를 준다.

public void GameOver()
{
    anim.SetBool("isDie", true); 
    Invoke("TimeStop", 0.05f);
}

그러면 애니메이션이 실행되고 0.5초 있다가 timeScale이 0으로 바뀐다. 

이렇게 하면 장애물이 풍선에 부딪혔을 때 풍선이 터지는 듯한 애니메이션을 줄 수 있다. 

 

결과 화면

 

 

 

728x90