유저가 움직이는 마우스의 이동량에 따라 5~10이 A고, 나머지는 none이라고했을때


키코드 ZXC 처럼 하나하나 단위로 떨어지지 않은 마우스나 컨트롤러 인풋에서는

유저가 이걸 보통 정교하게 컨트롤할수는 없잖아?


A라는 상태에 있도록 마우스를 안착시키는게 유저의 의도라고 해도

실제로는 로그를 찍어보면 손이 부들부들 떨리면서 발생한 오차에 의해 AAAAAAAAAAANANAAANAAAAAAAAAAANAAAAA 이런식으로 찍힐때도 있단 말이지

(N = none)




처음에는 각 상태에 들어가면 isA형태의 bool 변수를 true로 설정해주고

유저가 isA를 가진채로 none 상태 입장용 if문(혹은 A 입장의 else)을 밟으면 0.5초(보정시간)의 코루틴을 돌리고, 이 동안은 스테이트를 바꾸지 않도록 하면서

none 상태 입장용 if문에 코루틴이 끝나야만 주는 allowChange bool변수가 true일때 none 입장가능 < 같은걸 걸어놨음


여기서 다시 A로 돌아갔을때 Stop 코루틴을 끊어주는거임


기대값은 AAAAAAAAAAANANAAANAAAAAAAAAAANAAAAA 라는 상태 이동이 감지되면

none으로 이동할때마다 코루틴을 밟아서 실제 상태변환이 일어나지 않고, 다시 A로 이동하면 상태변환을 막고있던 코루틴의 실행을 끊고 A를 유지하게 만드는거임.




none에 있는걸 보정해줄 필요가 딱히 없어서 A에서 none으로 가는 등의 행위는 지연시켜서 막되 none에서 A로 갈때는 막지 않는다< 이런걸 만들려고 했던거라

걍 A 입장에 코루틴 스톱을 넣어놓고 allowChange가 true일때만 none에 접근할 수 있게 하면 금방해결이 됐는데


11~15에 할당된 B라는 스테이트와 16~20에 할당된 C라는 스테이트가 생기니까 갑자기 어려워졌음

심지어 이번에는 A에서 B로 갈때의 A보정만 있는게 아니라

B에서 A로 가는 쌍방 보정시간도 생각해야하기 때문에 머리가 복잡해짐.


처음에는 A의 진입에도 allowChange가 true일때 접근가능이라는 조건을 걸었더니

그 어떤 상태에도 접근할 수 없게 되더라 ㅋㅋ




그렇다고 모든 상태 이탈체크용 변수 + 모든 상태 이동에 따른 코루틴을 다 만들어서 각각 돌리자니 관리가 안될것같고

나중에 스테이트가 추가될때마다 "으어 이게 뭐지" 같은 소리를 뱉을 것 같음...




기초만 들고 몸비틀기 하고 있어서 난관이 많은 것 같은데, 이런때쓰기 좋은 함수 or 서치 키워드가 있을까..?

오늘 삽질만하다가 마음이 꺾여버렸어


알려주면 내일 실험해보고 알려줌