
상황 및 발생한 버그 설명
우선 이 게임은 하단의 버튼 UI(영상에는 안 넣었다.)를 누르면 발판을 한 칸씩 올라가는 방식이다.
따라서 다음 블럭 색과 같은 색의 버튼을 누르면 (한 칸씩 올라가며) 애니메이션이 발동 되도록 했다.
애니메이션을 발동시킬 때는 animator의 trigger를 사용하여 다음과 같은 코드를 사용했다.
animator.SetTrigger("ClimbTrigger");
애니메이션은 잘 적용 되었으나....문제는 버튼을 빠르게 연달아 누르면 상단의 문제 영상과 같이 애니메이션이 두 번 발동되는 것이다. (천천히 올라가면 문제가 발생하지 않았다.) 정말 몇 번 연속 빠르게 올라가든 항상 두 번씩만 반복 재생되었다.
따라서 이를 해결하기 위해
- animator.ResetTrigger(”ClimbTrigger”)
- animator.StopPlayback()
- enable 비활성화/활성화
- bool형의 추가 파라미터 적용
등의 방법을 써봤지만 뭐가 문제인지 정말 하나도 먹히지 않았다.......
그나마 아래와 같은 코드를 쓰니까 기존의 버그는 해결됐다!
// 기본 애니메이션의 이름이 rest였다.
// 현재 애니메이션 상태가 rest라면 ClimbTrigger를 작동시키는 것
if (animator.GetCurrentAnimatorStateInfo(0).IsName("rest"))
animator.SetTrigger("ClimbTrigger");
근데 이렇게 하니까 버튼을 빠르게 여러 번 누르면 제일 처음 작동됐던 애니메이션이 쭉 이어져서 작동되는 바람에....이 방법도 기각했다.
그래서 결국에는 climb 애니메이션에 있던 trigger를 지우고, trigger를 통해 애니메이션을 작동시키는 방법 대신 다음과 같은 코드를 통해 작동시켰다.
animator.Play("climb");
이렇게 하면 특정 타이밍에서 애니메이션이 살짝 제대로 작동되지 않는 것 같긴 한데, 우선 어느정도 버그는 해결되었으니 이 정도에서 만족하기로 했다... 나중에 시간이 많을 때 다시 한 번 연구해봐야겠다.

아직은 유니티를 공부하는 중이라 제가 틀린 것이 있을 수도 있습니다.
잘못된 것이 있다면 언제든지 댓글로 알려주세요 :D
'Unity' 카테고리의 다른 글
| [Unity/C#] UI 위치가 원하는 대로 변경되지 않던 문제 (0) | 2023.06.18 |
|---|