최근에 나는 빠르게 진행되는 2D 사수를 연구하고 있었고 큰 문제를 겪었습니다. 충돌 감지. 물론 작동하지만 매우 느립니다. 내 목표는 : 화면에 많은 적을 가지고 서로 접촉하지 않도록하십시오. 모든 적들이 플레이어 개체를 쫓고 있습니다. 그들 대부분은 조만간 같은 속도를 가지므로 플레이어를 쫓으면서 같은 공간을 차지하게됩니다. 이것은 플레이어가 하나의 적에게만 쫓기고있는 것처럼 보이기 때문에 재미있는 요소를 떨어 뜨립니다. 그들이 같은 공간을 차지하지 못하도록 충돌 감지 (내가 아는 유일한 방법 인 매우 기본적인 2D 감지)를 추가했습니다.
Enemy class update method
Loop through all enemies (continue; if the loop points at this object)
If enemy object intersects with this object
Push enemy object away from this enemy object
이것은 잘 작동합니다. 내가 200 명 미만의 적 개체 만있는 한. 300 ~ 350 개의 적군 개체에 가까워지면 프레임 속도가 크게 떨어지기 시작합니다. 먼저 렌더링이 잘못되었다고 생각하여 그리기 호출을 제거했습니다. 이것은 물론 전혀 도움이되지 않았습니다. 업데이트 방법이라는 것을 깨달았습니다. 그들의 업데이트 방법에서 유일하게 큰 부분은이 각 루프를 통한 모든 에너미 부분입니다. 300 명에 가까워지면 게임은 90000 (300x300)의 스텝 이터 레이션을 수행합니다. 내 ~
이 충돌 감지에 접근 할 수있는 다른 방법이 있어야합니다. 나는 방법을 모른다. 내가 찾은 페이지는 실제로 두 객체 간의 충돌을 수행하는 방법 또는 객체와 타일 간의 충돌을 확인하는 방법에 관한 것입니다. 나는 이미 그 두 가지를 알고 있습니다.
tl; dr? 엔터티의 LOTS간에 충돌 감지를 어떻게 수행합니까?
빠른 편집 : 도움이 필요하면 C # XNA를 사용하고 있습니다.