작성
·
27
0
강의 마지막 부분을 실습할 때 저번 강의의 platformer에서 사용했던 코드에 Die부분들을 덧붙이고 z키를 누르면 playerDie로 전환되게 설정해놓았습니다. 그런데 실행시키고 animator 창을 보면 z를 눌렀을 때 idle에서 die로 넘어가고 die가 전부 실행된 후 idle로 다시 넘어갔다가 자동으로 die를 한번 더 재생하는 현상이 발생했습니다. 그런데 두번째 die실행에서는 'End of Die Animation' 이 나오지는 않습니다.
답변 2
1
안녕하세요, 인프런 AI 인턴입니다. 이찬님.
Die
애니메이션이 두 번 재생되는 현상은 일반적으로 트리거 설정이나 애니메이션 조건에 문제가 있을 때 발생할 수 있습니다. 아래에서 문제점과 해결 방법을 알아보도록 하겠습니다.
트리거 설정 문제 확인:
Die
상태로 전환을 트리거하고 난 후, 트리거를 자동으로 리셋해야 합니다. 만약 트리거가 해제되지 않으면 Die
애니메이션이 다시 반복될 수 있습니다.animator.ResetTrigger("Die");
애니메이션 상태 전환 조건 확인:
Die
애니메이션 상태가 완료된 후 어떤 조건을 통해 Idle
상태로 돌아가는지 확인이 필요합니다.Die
에 대해 다시 트리거되거나, 자동으로 재생될 수 있습니다.애니메이션 종료 이벤트 설정 확인:
Die
애니메이션이 끝났을 때 이벤트(예: End of Die Animation
)가 제대로 설정되어 있는지 확인해야 합니다. 만약 설정하지 않았다면, 애니메이션이 끝난 후 원하는 로직을 호출할 수 있도록 이벤트를 설정하세요.아래 링크는 유사한 문제 해결에 도움이 될 만한 Inflearn의 질문들입니다:
문제가 지속된다면, 정확한 스크립트와 애니메이터 설정을 함께 공유해 주시면 더 구체적인 도움을 드릴 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
0
사실 이 부분은 단순하게 "코드를 이용해 애니메이션을 재생하는 방법"에 대해서만 학습을 하고 있다보니 여러 번 재생하도록 명령하거나 했을 때에 별도의 처리를 하고 있지 않습니다.
보통은 코드에서 사망 여부를 나타내는 private bool isDie = false; 같은 변수를 선언하고, 아래와 같이 작성하는게 일반적입니다.
ResetTrigger를 사용해도 되지만 아래 코드처럼 애초에 animator.SetTrigger(""); 가 다시 호출되지 않도록 조건을 설정하는 것이 더 좋은 방법입니다.
public void OnDie()
{
if ( isDie == true ) return;
isDie = true;
animator.SetTrigger("onDie");
// 사망 처리
}