일반적으로 경계 상자는 대략적인 테스트입니다. 테스트 속도를 위해 바운딩 박스는 종종 "축 정렬"("AABB"로 약칭 함)됩니다. 즉, 객체와 함께 회전하지 않지만 포함 된 객체가 회전하면 크기가 조정됩니다. (질문에 포함시킨 이미지는 항공기 스프라이트에 대한 AABB의 합리적인 예입니다.)
경계 상자 교차 테스트는 신속하게 실행되므로 완전히 관련없는 모든 요소를 제거 할 수 있지만 일련의 일 수도 있고 일 수 있습니다. 그 후에는 (필요한 경우 자주 필요하지 않음) 더 정확한 교차 테스트를 수행 할 수 있습니다. 예를 들어 기본 기하학을 기반으로하거나 픽셀 기반 광선 교차를 사용합니다. 픽셀 충돌은 complicated in libGDX입니다.
특정 경우에 대해 비행기 모델을 선으로 모델링 할 수 있다고 생각합니다. 코에서 꼬리까지 한 줄을 그리는 것으로 상상해보십시오. 쉘이 선을 치면 비행기에 충돌합니다. 픽셀 기반의 정확한 충돌 감지가 필요하지 않습니다 (이 방법은 충분히 좋아 보일 것입니다).
가정 당신의 포탄은 두 선분의 교차점을 계산하기 위해 필요, 수직 이동 : Efficient maths algorithm to calculate intersections
당신은 아마 그 정확한 될 필요가 없습니다 멀리 거친로 얻을 수 말했다 모든 AABB 기반 테스트. 예를 들어 아래쪽 이미지에서 셸이 실제로 평면과 교차하지 않는 동안에도 명확하게 나타납니다. 이동 속도가 빠르다고 가정하면 플레이어는 말할 수 없습니다. 게임을 조금 이나마 용서하고 싶다면 바운딩 박스를 조금 더 작게 (아마도 상자의 꼬리 부분을 남겨 두어) 조금씩 퍼지 할 수 있습니다.
또한 교차점 감지에 Ray
을 사용하지 마십시오. 이는 터치 포인트가 상자를 가로 지르는 지 여부를 테스트하는 것과 같습니다. 셸에는 AABB를 사용해야하고 rectangle overlap test을 사용해야합니다.
코에서 꼬리까지 줄을 생각했습니다. 그러나 쉘이 맨 아래 줄의 코를 통과하면 그것은 내게 적합하지 않습니다. 물론 하단 선과 수직 인 두 번째 선을 만들 수 있습니다. 하지만 실제로 Ray와 BoundingBox를 어떻게 사용하는지 알고 싶습니다. 어쨌든 고마워! – Nolesh