매번 게임만들때 기능구현하면 A하면 B한다 같은걸 주로하다보니까


A했지만 앞의 동작이 끝나지 않았으니 끝날때까지 기다렸다가 B한다


이런건 처음 만들어봐




키를 뗐을때가 트리거라서 그래도 좀 만들기 쉬웠는데


animator.GetCurrentAnimatorStateInfo(0)로 현재 애니메이션값을 받아서 normalizedTime으로 진척도 퍼센티지를 받아오고

0.98 이상일때만 들어갈 수 있는 if문에 !input.GetKey로 if문 하나 더 만들어서 처리했음



조금 더 구체적인 스킬 구성은


스킬1은 A-B-C의 상태가 순차적으로 실행이 됨.


A는 눌렸을때의 선동작

B는 이 키를 계속 누르고 있다면 반복호출해서 차지카운트를 모으고

C는 발사해서 차지 카운트 만큼 높아진 대미지로 공격하는거야


idle-(down)-A-(hold)-B-(up)-C 의 인풋 연결은 잘 만들어놨는데

내가 헤멘 부분이 A의 선동작을 보기도 전에 키를 떼버려서 B를 진입하지 못할때도 A의 선동작을 모두 본 뒤 C를 가장 약한 상태로 공격하게 만드는거였음


그래서 애니메이터 스테이트에서 98퍼까지의 진척도를 받아와서, 그 사이 구간에서는 뗀 입력처리가 발생해도 아무런 인풋이 들어가지 않게 비워놓고

98퍼를 벗어나는 순간 떼어있는 상황이 감지되면 B를 거치지 않고 (A랑 C의 중간동작을 억지로 끊어서 만든게 B라서 상관없었음) C를 호출하게 했더니 해결된거임




그래도 이번엔 아다리가 잘맞아서 쉽게 넘어간 느낌이 있는데


만약 떼었을때 가 조건이 아니라, A-B-C가 각각의 down 인풋으로 진행되어야 하고, 이에 대한 선입력(인풋을 미리 받아놓고, 발동 가능한 지점이 되면 연결해서 작동될 수 있게 한다) 를 만드는거였으면 해결 못했을듯..


아직도 잘 모르겠다.. 각각의 입력 가능 구간이 절반부터라고 했을 때 normalizedTime이 0.5 이하일때 인풋이 눌리면 (if문) A_ok같은 불변수를 true로 저장해놨다가

normalizedTime이 0.5가 되거나 그 이상이 되었을때 A_ok가 true면 B로 넘어가게 하는식으로 작성했을까?..


아직도 액션게임 인풋시스템은 잘 모르겠다 너무 어려움