애니메이션 도중, 다른 애니메이션으로 전환할 때
CurFrame으로 현재 애니메이션의 프레임을 가져와서,
다른 애니메이션에서 해당 프레임부터 재생을 시작하는 기능을 만들었습니다.
하지만 종종 CurFrame으로 마지막 프레임을 가져와 재생할 경우
해당 애니메이션의 처음 프레임이 노출되는 경우가 발생하는데
어제부터 원인을 도저히 찾을 수 가 없네요...
위 Gif의 초반 부분을 보시면 그냥 애니메이션을 실행시키면 잘 진행됩니다.
하지만 지금 재생중인 메시그룹과 다른 메시그룹으로 이루어진 애니메이션을
(메시 그룹은 Side, Front, Back 3가지로 이루어져 있고 좌우는 Flip으로 처리합니다)
PlayAt으로 실행 시킬 시 애니메이션의 첫 프레임의 모습이 잠깐씩 보입니다.
(첫 프레임 - 지면에 서있는 모습)
원래는 상 하 때도 문제가 보이고 더 많이 보여야 하는데 gif 녹화 툴이 좋지 않아서
많이 생략되어 보이네요.
(공중에서 좌우 전환은 Flip으로 처리되는 부분이라 오류가 발생하지 않습니다)
위 점프 애니메이션을 사용할 때의 코드입니다.
실험을 위해
jumpingAnimeData = portrait.PlayAt(_animeName, currentframe);
윗줄에 portrait.StopAll(); 이나 portrait.PauseAll(); 를 사용해봤지만 반응은 같았습니다.
위에 설명했지만
애니메이션들은 Back, Side_Right, Front
그룹인 총 3가지 그룹으로 이루어진 애니메이션들이고
각각 애니메이션들은 반복 재생이 비 활성화 되어 있으며
시작 프레임과 종료 프레임, FPS가 같은 상태들입니다.
혹시 키 입력 시 코드상 오류로
점프가 아닌 다른 애니메이션이 시작되는게 아닐까도 생각하여
(당연히 jump중일땐 다른부분이 막혀서 안되는게 당연하지만)
다른 애니메이션 실행부분에 모두 디버그 출력을 입력하여
일일히 노가다로 체크해봤지만
점프 애니메이션 도중 다른 애니메이션이 출력되는 경우는 없었습니다...
혹시 윗부분에 써놓은 코드가 문제인지
아니면 다른 설정부분의 문제가 있는것 인지 알 수 가 없네요 ㅠㅠ
* 추가
게시글 올리려고 gif 파일들을 보면서 분석을 해봤는데
왼쪽 방향키, 위쪽 방향키 를 반복적으로 누르는 경우
왼쪽을 누르면 위족방향을 보는 애니메이션의 잔상이,
위쪽 방향을 누르면 왼쪽 애니메이션의 잔상이 보입니다.
즉, PlayAt을 사용하여 다른 메시그룹의 애니메이션을 마지막 프레임에서 실행할 경우
(ex : PlayAt("다른애니메이션", 15);)
현재 진행 중이었던 애니메이션의 첫 프레임이 출력되고
다른 메시그룹의 애니메이션이 요청받은 프레임부터 정상적으로 출력되는 것으로 생각됩니다.
1 - 애니메이션 정상 실행 후 종료
2 - CurFrame으로 마지막 프레임을 받아옴
3 - 다른 메시 그룹의 애니메이션을 PlayAt으로 요청
4 - 현재 실행되던 애니메이션의 0프레임 출력
5 - 다른 메시 그룹의 마지막 프레임 애니메이션 정상 출력
이번에도 Gif에는 상당히 생략되어 있지만
실제로는 한 50프로 확률로 발동되는 것 같네요.
100프로 발동되는 것 도 아니고...
버그 수정 감사합니다!
잘 해결되었습니다!