2013-08-23 63 views
0

我有一個工作碰撞系統,我不想讓「玩家」通過的精靈。問題是我不知道我應該在碰撞時執行什麼以使玩家不會傳遞精靈。Andengine Tiledmap如何讓精靈不會被另一個精靈所阻擋?

wallCollision()方法當前爲空。

if(tmxTileProperties.containsTMXProperty("collision", "1")) {  
    Rectangle rect = new Rectangle(tmxTile.getTileX(), tmxTile.getTileY() ,128, 128, mEngine.getVertexBufferObjectManager()) 
    { 
     @Override 
     protected void onManagedUpdate(float pSecondsElapsed) 
     { 
      if (player.collidesWith(this)) 
      { 
       wallCollision(); 
      } 
     } 
    }; 
    rect.setVisible(false); 
    mainScene.attachChild(rect); 
} 

回答

0

問題位於here解決這個問題。下面的方法創建一個JBox2D主體,與被阻塞的tile相同的位置。我不知道這是如何與路徑結合使用以排除被阻塞的磁貼,但我已經看到在其他地方使用相同的方法,假設您使用的是GLES2。希望這可以幫助。

private void createUnwalkableObjects(TMXTiledMap map){ 
       // Loop through the object groups 
       for(final TMXObjectGroup group: this.mTMXTiledMap.getTMXObjectGroups()) { 
         if(group.getTMXObjectGroupProperties().containsTMXProperty("wall", "true")){ 
           // This is our "wall" layer. Create the boxes from it 
           for(final TMXObject object : group.getTMXObjects()) { 
             final Rectangle rect = new Rectangle(object.getX(), object.getY(),object.getWidth(), object.getHeight()); 
             final FixtureDef boxFixtureDef = PhysicsFactory.createFixtureDef(0, 0, 1f); 
             PhysicsFactory.createBoxBody(this.mPhysicsWorld, rect, BodyType.StaticBody, boxFixtureDef); 
             rect.setVisible(false); 
             mScene.attachChild(rect); 
           } 
         } 
       } 
     }