작은 2D 게임 엔진을 개발 중입니다. 문자에는 현재 다음을 수행하는 페인트 방법이 있습니다.
- 속도 등에 따라 캐릭터의 새로운 위치를 계산하십시오.
- 충돌 그리드 셀 업데이트 **
- 새로운 위치에 캐릭터를 그리십시오
** 교차점 확인 횟수를 줄이기 위해 충돌 그리드를 만들었습니다.
이제 충돌을 감지하기 위해 생각한 기본 알고리즘은 다음과 같습니다.
For Each Character
Check intersection with characters in surrounding 8 cells
이 코드를 페인트 방법에 간단히 넣을 수 있습니다. 그러나 여기에 내가 예상하는 문제가 있습니다.
두 문자 A와 B가 충돌 그리드의 인접한 셀에 있다고 가정합니다. 이제 문자 A의 반복에서 위의 알고리즘에 따라 B와 충돌 한 것을 감지합니다. 문자 B에 대한 반복에서 A와 충돌 한 것을 감지합니다.
그러나 A가 B와 충돌 한 것을 감지하면 B에게 A와 충돌했다는 사실을 알려야한다는 생각이 있습니다. 이렇게하면 두 명의 배우가 충돌 할 때 많은 비교가 필요합니다. 그러나 이것을 처리하는 방법을 모르겠습니다. 모든 캐릭터가 충돌을 확인하는 대신 게임 루프 내에서 충돌을 확인해야한다고 생각합니다.
이 접근법이 맞습니까? 이런 종류의 문제를 어떻게 처리 했습니까? 나는 충돌 그리드를 스스로 생각했다. 충돌 그리드 로직에 대한 대안이 있습니까?