필자는 화면에서 객체 간의 충돌을 확인하는 데 사용할 함수가 두 가지 있습니다.이 함수는 많이 실행될 것이므로 최대한 효율적으로 실행하고 싶습니다. 그들은 현재 상당히 엉망으로 보이기 때문에 당신의 도움을 얻을 수 있는지 궁금합니다. 이것은 실제로 객체에서 호출 될 수있는 기능입니다 : 다음과 같이 충돌 감지 개선
내 기능
은bool ScreenObject::intersects(ScreenObject & a,ScreenObject & b) {
if(inter(a,b))
return true;
else
return inter(b,a);
}
이 간입니다 :
bool inter(ScreenObject & a,ScreenObject & b) {
if(a->getsx()>b->getsx()) {
if(a->getsx()<b->getSxmax()) {
if(a->getsy()>b->getsy())) {
if(a->getsy<b->getSymax()) {
return true;
}
} else {
if(b->getsy()>a->getsy())) {
if(b->getsy<a->getSymax()) {
return true;
}
}
}
}
}
return false;
}
getsx/getsy 최소 값을 반환 x/y (즉, 객체의 왼쪽 아래 모서리)의 getSxmax/getSymax는 최대 값을 반환합니다. 내 질문은이 코드를 더 나은 방법으로 만드는 것인가하는 것이다.
개체의 모양은 무엇입니까? 예를 들어, 한 오브젝트가 볼록하고 다른 오브젝트가 오목한 경우 오히려 최소 또는 최대를 확인하면 오 탐지 긍 정적을 반환 할 수 있습니다. – kaisernahid
이 경우 대다수의 오브젝트는 직사각형입니다. 그러나 그렇지 않은 오브젝트가있을 것입니다. 오브젝트를 체크하는 방법을 설명 할 수 있습니까? 오브젝트와 일치하는 좌표를 확인해야합니다. 그러나 더 좋은 방법이 있다면 설명해주십시오. – user2673108
이 gamedev.se 주제를 한번보세요 : http://gamedev.stackexchange.com/questions/586/what-is-the-fastest-way-to-work- out-2d-bounding-box-intersection – rkhayrov