2014-01-29 109 views
1

我在LibGdx中使用Box2D創建一個平臺遊戲。我有一個算法,可以將拼圖轉換爲燈具。而且我使用聯繫偵聽器來確定玩家是否在空中,但是問題是,因爲我使用的燈具是彼此相鄰,LibGdx Box2d遊戲平臺遊戲跳轉執行

(P)--> 

|瓷磚| |瓷磚| |瓷磚|

聯繫人偵聽程序在調用聯繫人之後調用聯繫人終止,當我傳遞相鄰的磁貼並將MOB_AIR值設置爲true時,即使我在地面上,也不能跳轉。

代碼的其他部分(暴徒和box2d世界)工作正常,因爲我可以跳,當我新登陸或瓷磚之間。

如果您之前遇到同樣的問題,是否有一個很好的方法來實現這個跳躍?

http://i.imgur.com/v8ny3sO.png

http://i.imgur.com/yWcDsZb.png

對不起我的英語不好,任何有助於將不勝感激。

聚苯乙烯:也問題不是因爲box2d多邊形 - 多邊形collison故障,我使用chainhape播放器和多邊形瓷磚。 `

 public void beginContact(Contact contact) { 
      Fixture x1 = contact.getFixtureA(); 
      Fixture x2 = contact.getFixtureB(); 

      if(x1.getUserData()!=null && x2.getUserData()!=null){ 
       if(x1.getUserData().equals("sensor") && x2.getUserData().equals("x")){ 
        mob.setState(Mob.ON_AIR, false); 
       } 

       else if(x2.getUserData().equals("sensor") && x1.getUserData().equals("x")){ 
        mob.setState(Mob.ON_AIR, false); 
       } 
      } 

     } 

     @Override 
     public void endContact(Contact contact) { 
      Fixture x1 = contact.getFixtureA(); 
      Fixture x2 = contact.getFixtureB(); 

      if(x1.getUserData()!=null && x2.getUserData()!=null){ 
       if(x1.getUserData().equals("sensor") && x2.getUserData().equals("x")){ 

        mob.setState(Mob.ON_AIR, true); 

       } 
       else if(x2.getUserData().equals("sensor") && x1.getUserData().equals("x")){ 

        mob.setState(Mob.ON_AIR, true); 
       } 
      } 
     }` 

回答

1

而不是簡單地設置的狀態,當你得到一個開始/結束接觸,嘗試遞增和遞減計數器跟蹤的傳感器有多少事情是感人。