2016-01-04 4 views
0

Я новичок в Box2D и в настоящее время пытается определить, удалось ли объекту (шару) пройти через другой объект (Цель) с помощью b2Contact. Для этого я внедрил b2ContactListener, и все работает нормально.Box2D обнаружение одностороннего столкновения для круглых объектов

Тем не менее, мне было интересно, есть ли способ для меня установить обнаружение столкновения только для одного направления? Например, только слева направо, столкновение не будет считаться, если мяч проходит справа налево. Я хочу реализовать что-то вроде этого от here, как видно из документации.

В документации они обнаружили направление столкновения с помощью очков от объекта как такового

int numPoints = contact->GetManifold()->pointCount; 
b2WorldManifold worldManifold; 
contact->GetWorldManifold(&worldManifold); 

Однако, для моего случая, я использую b2CircleShape для моего шара объекта, который косвенно возвращает numPoints равным 0. Таким образом, я не могу обнаружить столкновение с использованием вышеуказанного метода. Есть ли способ обнаружить точки из круга? Или я могу определить направление столкновения?

+0

Возможно, вы могли бы принять во внимание относительную скорость объектов и их положение? –

ответ

0

Возможно, это поможет вам.

b2WorldManifold manifold; 
contact->GetWorldManifold(&manifold); 
manifold.normal.Normalize(); 
if(manifold.normal.x > 0){ 
    [...] 
} 
Смежные вопросы