Unity 트러블 슈팅 : OnTriggerStay2D 충돌 이벤트 오류 문제 해결
트러블 슈팅
배경
Unity 2022.3.17f1 LTS 버전을 사용하여 플레이어 캐릭터가 특정 오브젝트에 닿았을때 OnTriggerStay2D()를 사용하여 상호작용을 개발 중이였습니다.
발단
플레이어에게 Rigidbody 2D와 Box Collider 2D를 넣고 특정 오브젝트에는 Box Collider 2D를 넣고 Is Trigger를 True를 적용한 상태였지만 충돌 이벤트가 작동을 하지 않는 현상이 발생했습니다.
전개
문제를 해결하기위해
1. Rigidbody 2D 컴포넌트 확인 : 플레이어에 Rigidbody 2D가 제대로 추가되어 있는지 점검
2. Box Collider 2D 컴포넌트 확인 : 플레이어와 특정 오브젝트에 Box Collider 2D가 제대로 추가되어 있는지 점검
3. Is Trigger 확인 : 특정 오브젝트에 Box Collider 2D의 Is Trigger가 True인지 점검
4. 충돌 이벤트 확인 : OnTriggerStay2D() 코드안에 Debug.Log를 추가해 충돌 이벤트가 제대로 작동하는지 점검
이 과정을 통해 충돌 이벤트가 작동하지 않는 원인으로 플레이어가 움직이지 않으면 충돌 이벤트가 작동을 하지 않는 다는 것을 파악했습니다.
위기
위 문제를 해결하기 위해 플레이어와 특정 오브젝트를 새롭게 만드는 방식도 해보고 컴포넌트를 새로 추가도 해보았지만 실패 했습니다 최후의 수단으로 튜터님에게 찾아가 질문을 한 결과 Rigidbody의 설정에서 Sleeping Mode가 Start Awake로 설정 되어 있었습니다.
절정
문제를 해결하기 위해
1. Rigidbody의 Sleepping Mode를 Naver Sleep로 변경
2. Rigidbody의 Collision Detection를 Continuous로 변경
을 하였습니다.
결말
Rigidbody의 Sleepping Mode를 수정한 후 충돌 이벤트가 게속 작동을 하였습니다.
플레이어는 특정 오브젝트와 닿았을때 상호작용을 할 수 있었습니다.
이와 함께 충돌이벤트가 계속 작동이 필요할때 Rigidbody의 설정을 점검하여 추후 유사한 문제가 발생하지 않도록 설정을 하였습니다. 여기서 유의사항으로 Sleeping Mode를 never Sleep으로 하면 충돌 여부를 게속 확인 하여 메모리 사용량이 증가 하기 때문에 필요한 상황에서만 사용하는 것을 유의해야한다고 튜터님이 말씀하셨다.