0

我有一个工作碰撞系统来处理我不希望“玩家”通过的精灵。问题是我不知道我应该在碰撞时执行什么来让玩家不通过精灵。

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);
}
4

1 回答 1

0

位于此处的问题解决了这个问题。下面的方法在与被阻止的图块相同的位置创建一个 JBox2D 主体。我不确定这如何与寻路结合使用以排除阻塞的图块,但我已经看到在其他地方使用相同的方法,假设您使用的是 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);
                                 }
                         }
                 }
        }
于 2013-08-27T15:13:46.313 回答