유저가 움직이는 마우스의 이동량에 따라 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 서치 키워드가 있을까..?
오늘 삽질만하다가 마음이 꺾여버렸어
알려주면 내일 실험해보고 알려줌
A가 걷기 B가 구보 C가 달리기 뭐 이런거고 커서 이동속도에 따라서 상태를 바꾸고싶단거지? 그냥 0.2초간 평균 커서속도 구하고 거기에 맞는 스테이트를 적용하면 안되는거임?
걷기나 달리기의 직렬 상승은 아니지만 대충 쉬운걸로 이해하자ㅋㅋ 대신 걷기나 달리기 둘중 하나가 필요한데 걷기를 의도한 상태에서 달리기가 나오면 안됨 (최대한 빨리 걸어야 통과 가능하고, 뛰면 죽음 같은 극단적 상황 생각하면 이해하기 편할듯..)
0.2초간의 평균 커서속도 < 는 어떻게 구함...? Input.GetAxis에 깡으로 Time.deltatime*0.2f같은걸 할 수 있나..? 아님 0.2초마다 마우스가 주는 인풋 값을 preMouse에 갱신저장하고 현재 인풋값인 curMouse랑 합산 후 2로 나눠서 평균 인풋값 필요에 따라 내림/올림 처리해서 구하나..? 뭔가 위에거 쓸거면 큐로 받는게 나을것같기도 하고... 생각할수록 멀리가는 것 같은데 ㅋㅋㅋㅋ
getaxis로 받아온거에 못쓸이유가 머가있음? 스크린좌표에서 벡터값 받아오ㅓ도 되고 뭐 방법은 많지
GetAxis에 deltaTime 곱하면 어케 되는거지... 인풋의 결과 값에 곱해지는게 아니라 다음 인풋을 다시 입력받는 시간을 느리게 하는걸로 되는거거나, 아님 걍 0.2초간의 인풋량의 평균값을 산출해서 데려오는건가? 뭔가 많이 신기한데 전자라면 bool 트리거처럼 입혀지는 GetTouch같은거에서도 저렇게 하면 touch의 재입력 간격을 조절할 수 있나? 싶기도 하고 후자면 벡터로 반환되는 acceleration같은것도 표준값을 구해서 줄 수 있나? 갑자기 궁금해짐ㅋㅋㅋㅋㅋ