2017-10-09 141 views
0

我的問題:Box2D的傳感器沒有檢測到接觸

武器體採空探測接觸時,我做它的固定設備傳感器。

ContactListener代碼:

void preSolve(contact: Contact, oldManifold:Manifold){ 

     switch (fixA.getFilterData().categoryBits | fixB.getFilterData().categoryBits) { 
      case Game.WEAPON_BIT | Game.ENEMY_BIT: bodyDeleteList.add(contact.getFixtureA().getBody()); 
      System.out.println("Contact!"); // this never prints 
      break; 
     } 
} 

當我做體安裝定期(評論fixtureDef.setFixtute(真))一切都變大,接觸發生和檢測。

文檔說:

/**的傳感器形狀收集聯繫信息,但從來沒有產生 碰撞響應。 */

但它沒有。所以也許我忘了一些東西。

回答

1

通過將此代碼添加到beginContact(..)方法來解決此問題。

這很奇怪,但傳感器只收集beginContact(..)方法中的聯繫信息。

void beginContact(contact: Contact){ 

    switch (fixA.getFilterData().categoryBits | fixB.getFilterData().categoryBits) { 
      case Game.WEAPON_BIT | Game.ENEMY_BIT: bodyDeleteList.add(contact.getFixtureA().getBody()); 
      System.out.println("Contact!"); // this prints 
      break; 
    } 
}