[2025_12_02]뒷 유닛이 앞 유닛을 미는 문제(2d 물리)

2025. 12. 2. 22:24TIL

문제상황

뒷 유닛이 앞 유닛을 밀면서 유닛들이 맵 밖으로 팅겨나가는 현상이 발생했다. 기획자님께서 전투 중에는 유닛들이 서로 밀리지 않도록 요청하셨다.

시도방법

물리 충돌로 인해 유닛이 밀려나는 것을 확인하고, Rigidbody2D의 bodyType을 조절하는 방법을 고려했다.

해결방법

전투 중일 때 유닛의 Rigidbody2D.bodyType을 RigidbodyType2D.Kinematic으로 변경하여 물리 엔진의 힘에 영향을 받지 않도록 설정했다. 이를 통해 유닛들이 부딪혀도 밀려나지 않게 되었다.

 
csharp
// 전투 시작 시
rigidbody2D.bodyType = RigidbodyType2D.Kinematic;

// 전투 종료 시
rigidbody2D.bodyType = RigidbodyType2D.Dynamic;

결론

Kinematic bodyType을 활용하여 전투 중 유닛이 밀리는 문제를 해결했다. 튜터님들께서 Flocking 알고리즘(무리 행동 패턴)과 군중 컨트롤(유니티 ESC) 기법에 대해 조언해주셔서, 향후 유닛 AI를 더 정교하게 구현할 계획이다. 단순히 물리적 충돌만 막는 것이 아니라, 유닛들이 자연스럽게 간격을 유지하며 이동하는 시스템으로 발전시킬 수 있을 것 같다.