Inflearn brand logo image

인프런 커뮤니티 질문&답변

이찬님의 프로필 이미지
이찬

작성한 질문수

따라하면서 배우는 고박사의 유니티 기초

2D Animation 실습 (12:34)

05-02 실습에서 마지막 부분을 해보니 죽는 키를 누르면 die 가 두번 재생됩니다

작성

·

27

0

강의 마지막 부분을 실습할 때 저번 강의의 platformer에서 사용했던 코드에 Die부분들을 덧붙이고 z키를 누르면 playerDie로 전환되게 설정해놓았습니다. 그런데 실행시키고 animator 창을 보면 z를 눌렀을 때 idle에서 die로 넘어가고 die가 전부 실행된 후 idle로 다시 넘어갔다가 자동으로 die를 한번 더 재생하는 현상이 발생했습니다. 그런데 두번째 die실행에서는 'End of Die Animation' 이 나오지는 않습니다.

답변 2

1

안녕하세요, 인프런 AI 인턴입니다. 이찬님.

Die 애니메이션이 두 번 재생되는 현상은 일반적으로 트리거 설정이나 애니메이션 조건에 문제가 있을 때 발생할 수 있습니다. 아래에서 문제점과 해결 방법을 알아보도록 하겠습니다.

문제 분석 및 해결 방안

  1. 트리거 설정 문제 확인:

    • Die 상태로 전환을 트리거하고 난 후, 트리거를 자동으로 리셋해야 합니다. 만약 트리거가 해제되지 않으면 Die 애니메이션이 다시 반복될 수 있습니다.
    • 트리거 리셋 코드: animator.ResetTrigger("Die");
  2. 애니메이션 상태 전환 조건 확인:

    • Die 애니메이션 상태가 완료된 후 어떤 조건을 통해 Idle 상태로 돌아가는지 확인이 필요합니다.
    • 조건을 정확히 지정하지 않으면… Die에 대해 다시 트리거되거나, 자동으로 재생될 수 있습니다.
  3. 애니메이션 종료 이벤트 설정 확인:

    • Die 애니메이션이 끝났을 때 이벤트(예: End of Die Animation)가 제대로 설정되어 있는지 확인해야 합니다. 만약 설정하지 않았다면, 애니메이션이 끝난 후 원하는 로직을 호출할 수 있도록 이벤트를 설정하세요.

참고 자료

아래 링크는 유사한 문제 해결에 도움이 될 만한 Inflearn의 질문들입니다:

문제가 지속된다면, 정확한 스크립트와 애니메이터 설정을 함께 공유해 주시면 더 구체적인 도움을 드릴 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

이찬님의 프로필 이미지
이찬
질문자

ResetTrigger를 사용하니 해결되었는데 강의 영상에서는 따로 사용하지 않은걸로 보였는데 혹시 또 다른 신경써야하는 부분이 있는건지 궁금합니다.

고박사님의 프로필 이미지
고박사
지식공유자

사실 이 부분은 단순하게 "코드를 이용해 애니메이션을 재생하는 방법"에 대해서만 학습을 하고 있다보니 여러 번 재생하도록 명령하거나 했을 때에 별도의 처리를 하고 있지 않습니다.

보통은 코드에서 사망 여부를 나타내는 private bool isDie = false; 같은 변수를 선언하고, 아래와 같이 작성하는게 일반적입니다.

ResetTrigger를 사용해도 되지만 아래 코드처럼 애초에 animator.SetTrigger(""); 가 다시 호출되지 않도록 조건을 설정하는 것이 더 좋은 방법입니다.

 

public void OnDie()

{

if ( isDie == true ) return;

 

isDie = true;

animator.SetTrigger("onDie");

// 사망 처리

}

이찬님의 프로필 이미지
이찬

작성한 질문수

질문하기