프로젝트 중 어둠의 접촉이라는 스킬을 구현하기 위해서 Coroutine을 사용했다.
스킬 테스트중 스킬이 작동하지 않는 것을 확인했고 이유를 찾기위해 디버그로 찾아보았다.
코루틴을 정상적으로 타고 1초 기다리는 부분에서 코루틴을 탈출했다.
원인이 몰까? 하고 코루틴에 대해 다시 찾아보았다. yield return부분에서 원래 탈출하는 건가? 라는 생각에 찾아보니
그건 아니였다.
그래서 원인이 뭘까? 하고 찾아보니 코루틴 스크립트를 가지고있는 오브젝트가 파괴될시 코루틴도 바로 탈출한다는 것이였다.
그래서 적과 총알이 부딪힐시 총알이 파괴되는데 파괴될때 코루틴도 종료하는 것이였다.
그래서 해결 방안으로 파괴되지 않은 GameManager의 인스턴스에서 실행하였다.
이렇게 실행하니 동작이 멈추지 않고 정상적으로 스킬이 구현되는 것을 확인했다.!

null체크를 했는데도 NullReferenceException이 뜨는 오류가 발생했다. 왜이런지 정말 보면서 고민을 많이 했다.
null != 도 해보고 인터넷도 찾아보고 했는데 나오지 않아서 뭐가 문제일까 가만히 보았는데
Target에 null체크가 아니라 position에 null체크를 하고있었다 그래서 한번 position을 빼고 해볼까 하고 뺀 후 작동을 해보니 타겟이 없을때 null오류가 뜨던 것이 null 오류가 뜨지 않았다.
자그만한 단어나 코드일지라도 자세히 봐야 할 것 같다.
프로젝트 중 레이어를 사용하여 Physics2D.IgnoreLayerCollision 을 사용 하였다.
그런데 이 레이어끼리 콜리전을 무시하는 것을 잘못 알고 있었다. 일시적으로 무시하는 줄 알고 있었는데 총알을 적과 플레이어가 맞지 않는 문제가 생겨 튜터님에게 질문을 하였다.
문제는 Physics2D.IgnoreLayerCollision였다.
전역적으로 layer끼리의 콜리전을 무시하는 것이여서 이것을 설정하면 계속해서 설정한 레이어들의 콜리전끼리 다 무시하는 것이였다.
그래서 적총알이든 아군총알이든 똑같은 총알레이어로 사용했고 레이어 마스크에 각각 총알레이어와 적한테는 적자신레이어, 플레이어한테는 플레이어 자신의 레이어를 넣었더니 모든 총알이 맞지않았다.
그래서 총알레이어를 적총알과 플레이어총알로 레이어를 나누어서 구분해서 넣어주니 정상적으로 작동했다.
'개발 TIL' 카테고리의 다른 글
내일배움캠프 27일차 TIL 프로젝트 마무리 및 배운내용 정리 (0) | 2025.02.28 |
---|---|
내일배움캠프 26일차 TIL 트러블 슈팅 (0) | 2025.02.27 |
내일배움캠프 24일차 TIL 학습내용, 트러블슈팅 (0) | 2025.02.25 |
내일배움캠프 23일차 TIL 트러블 슈팅 및 학습내용 (0) | 2025.02.24 |
내일배움캠프 22일차 TIL 학습내용 (0) | 2025.02.21 |