无法使用PhysicsEditor-Extension加载地形以进行碰撞

时间:2014-07-28 17:20:16

标签: java android andengine

对于我的Android游戏,基于AndEngine,我目前正致力于加载关卡。

我遇到了AndEngine-PhysicsEditor-Extension,它加载了由PhysicsEditor导出的XML和图片。

我现在正在创建一个类,方便地命名为MapLoader,它接受一个地图名称并调用PhysicsEditor扩展来加载适当的文件并注册它们。问题是,当图形按预期显示时,场景中的任何其他内容都会直接通过它而不会发生碰撞。

以下是调用MapLoader的方法:

MapLoader loader = new MapLoader(this, engine, world); // (Context, PhysicsWorld, Scene)
loader.loadMap("testmap1");

以下是MapLoader类的重要部分:

// Constructor
public void loadMap(String mapName) {

    this.atlas = new BitmapTextureAtlas(game.getTextureManager(), 2048, 1024, TextureOptions.BILINEAR);
    atlas.load();
    PhysicsEditorLoader loader = new PhysicsEditorLoader();
    this.tMap = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.atlas, game, "maps/" + mapName + ".png", 0, 0);
    this.sMap = new Sprite(0, 500, this.tMap, game.getVertexBufferObjectManager());
    this.world.attachChild(sMap);
    try {
        loader.load(game, engine, "maps/" + mapName + ".xml", sMap, true, true);
    } catch (IOException e) {
        e.printStackTrace();
        System.out.println("XML load failure");
    }

    this.sMap = new Sprite(0, 0, this.tMap, game.getVertexBufferObjectManager());
    world.attachChild(sMap);

    world.registerUpdateHandler(engine);

}

// .......Snip...........


// loadMap method
public void loadMap(String mapName) {

    this.atlas = new BitmapTextureAtlas(game.getTextureManager(), 2048, 1024, TextureOptions.BILINEAR);
    atlas.load();
    final PhysicsEditorLoader loader = new PhysicsEditorLoader();
    this.tMap = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.atlas, game, "maps/" + mapName + ".png", 0, 0);
    this.sMap = new Sprite(0, 500, this.tMap, game.getVertexBufferObjectManager());
    this.world.attachChild(sMap);
    try {
        loader.load(game, engine, "maps/" + mapName + ".xml", sMap, true, true);
    } catch (IOException e) {
        e.printStackTrace();
    }

    this.sMap = new Sprite(0, 0, this.tMap, game.getVertexBufferObjectManager());
    world.attachChild(sMap);

    world.registerUpdateHandler(engine);

}

我错过了什么吗?我将上述代码基于example

我已经尝试编辑源以指向XML加载的不存在的目录,之后它开始抱怨,表明找到了XML。


修改:如果怀疑某些内容存在错误,我已将其上传以供检查here。它是在PhysicsEditor中通过添加精灵创建的,使用形状跟踪器获取轮廓,并导出为AndEngine导出器。 XML存储在assets/maps/中,关联的精灵存储在assets/gfx/maps/

PS:在我开始测试之前,我正在使用PhysicsEditor的试用版。我不相信它会影响结果。

0 个答案:

没有答案