저는 Cocos2D를 사용하여 캐주얼 그리드 기반 2D iPhone 게임을 만들고 있습니다. 격자는 균일 한 크기의 디스크로 구성된 "시차"된 육각형 모양의 격자입니다. this과 비슷합니다.2D 육각 격자에서 충돌 감지
나는 그리드를 2D 배열에 저장했다. 또한 "주변"그리드 셀 개념이 있습니다. 즉, 특정 셀을 둘러싼 여섯 개의 그리드 셀 (여섯 개 미만을 가질 수있는 경계를 제외하고).
어쨌든 일부 충돌 감지를 테스트 중이며 계획 한대로 작동하지 않습니다. 그리드 셀 이동 셀의 XY 위치를 사용하여 주변 그리드의
- 계산 IJ 좌표 : 저는 여기에 현재 디스크의 고정 그룹에 접근하는 것 움직이는 디스크의 충돌 감지를 할 방법 ij- 좌표를 사용하는 셀
- 주변 셀을 검사하십시오. 공백이 없으면 충돌이 없음
- 비어 있지 않은 주변 셀이있는 경우 충돌에 필요한 최소 거리와 디스크 센터 간의 거리를 비교하십시오.
- 충돌이 발생하면 움직이는 디스크를 넣습니다 표 셀 ij
이렇게 작동하지만 너무 좋지는 않습니다. 나는 게임 루프의 각 단계에서 움직이는 디스크와 고정 된 디스크를 비교하는 잠재적 인 단순한 무차별 대입 방식을 고려했습니다. 이것은 정지 된 디스크 수가 300 max이므로 성능면에서 아마도 가능할 것입니다. 그렇지 않으면 공간 분할 데이터 구조를 사용할 수 있지만 너무 복잡합니다.
이와 같은 게임에서 충돌 감지에 대한 일반적인 접근 방식과 모범 사례는 무엇입니까?
사실 나는 이것을 수행했습니다. 이것은 주변 셀 목록을 가져 오기 전에 단계로 충돌 감지 알고리즘 초기에 발생합니다. – SundayMonday