1. Item 클래스의 코드인데, 자꾸 게임을 하다보면 항상은 아니고 가끔씩 아이템을 획득하는 과정에서 유니티가 갑자기 멈추더라구요. 에러가 나거나 이런게 아니라 그냥 멈춰버림.
2. 아이템이랑 플레이어가 부딪히면 최초 충돌인지 아닌지 검사하고 먼저 바깥쪽으로 팅겨져 나갔다가 다시 빨려들어가면서 두번째 충돌이면 아이템을 획득하는거임
3. 충돌이 두번 일어나다보니 이렇게 if랑 bool로 나누어놓았음.
4. 바깥으로 팅기는 함수임. 별거없고 그냥 트윈 DOMove로 이동하고 끝나면 자연스레 MoveToPlayer 호출해서 플레이어를 향해 이동하는거
5. 플레이어를 향해 이동하는 함수. 원래는 while true로 써서 별다른 브레이크를 안걸었는데 혹시 이거때문인가하고 elapsedTime 추가해본거임.
근데 똑같아요 여전히 갑자기 멈춤...
ItemAcquire 함수는 진짜 별거없음. 그냥 아이템 풀에 반환하는게 전부임. 이거때문일리는 없다고 생각해서 안올렸어요..
왜 멈출까요. 항상은 아니고 그냥 아이템 먹다보면 갑자기 멈춤 잘되다가도. 저 while 때문인가 생각했는데 그것도 잘모르겠고..
비동기로 아이템을 이동 중에 ItemAcquire가 실행된다면 어떤 일이 발생할까. 테스트를 해봐야겠는데?
나라면 일단 MoveToPlayer함수에서 elapsedTime 시간을 넉넉하게 늘려서 while이 끝나기 전에 ItemAcquire가 실행되면 문제가 생기는게 맞는지 테스트 해 볼거같아.
일단 나는 무기 이동 연출을 왜 비동기로 했을까 하는 생각도 들기도 함.
플레이어 위치가 계속 바뀌니깐 0.1초마다 포지션 재탐색하고 거기로 가라는 단순한 이유임..
비동기 안 써도 매프레임 플레이어 위치 확인 가능하잖아.
음.. 이러면 내부에서 어떤 순서로 일이 진행되는지 파악이 안 되지 않음? 비동기여서 더더욱 어려운 거 같음.. 상상이 안 감 한 놈은 따라가고 한 놈은 밀어내고
+ 두트윈까지 끼어들어서 더 헷갈리는듯.. 나 같은 경우 저럴 땐 두트윈 안 쓰거나 앞에 로직과 상관없이 두트윈 혼자서도 동작할 수 있게 만듦
무한 루프 걸렸을땐 비쥬얼 스튜디오 디버깅 붙여서 일시정지 하면 루프의 원인이 되는곳 콜스택 확인이 가능함