2010-06-30 6 views
1

여기 이미지 나는 공 완벽하게 작동하는 터치하면 확인 할Box2D의 연락 (isTouching) 문제

alt text

내 문제입니다. 때때로 화살표가있는 공은 아무 것도 만지지 않기 때문에 당연히 받아 들여지지 않습니다. 그러나 나는 약간의 여유를주고 싶다. 그래서 공이 4 픽셀/0.001m 떨어진 곳이라면, 그것은 만지작 거리는 것으로 간주되어야한다. 그래서 어떤 아이디어/어떻게 구현할 것인가? 저는 isTouching 코드를 보았습니다. 여기서 제가 생각해 낼 수있는 것이 있습니다.

 var b1 = body1; 
var b2 = body2; 

Transform xf; 
Transform xf2; 

    b1.GetTransform(out xf); 
b2.GetTransform(out xf2); 


var touching = AABB.TestOverlap(b1.GetFixtureList().GetShape(), b2.GetFixtureList().GetShape(), ref xf, ref xf2); 

if (!touching) 
continue; 

공이 먼가 있는지 테스트해야하며, 내가 할 수있는 일에 대해 단서가 없습니다.

답변

1

모든 수업이 무엇인지 모른 채 정확한 답을 내기가 어렵습니다. 그러나 일반적인 교장은 당신이 확인하고있는 범위를 늘리는 것입니다. 예를 들어, 도형이 반경 n의 원이라면 충돌을 확인할 때 n + 2의 반경을 사용할 수 있습니다. 반경을 사용하여 여전히 원을 그립니다. 충돌 탐지를 위해 증가한 반지름을 사용하기 만하면됩니다.

마찬가지로 AABB를 사용하면 경계를 몇 픽셀 씩 늘려야합니다. 그렇게하는 방법은 수업이 어떻게 이루어지는가에 달려 있습니다.

+0

원형 모양의 반지름을 늘리면 AABB도 업데이트되어야합니다. 수동으로 크기를 늘릴 필요가 없습니다. –

관련 문제