繁体   English   中英

如何在Tiled中动态更改图块? (AndEngine)

[英]How to change a tile dynamically in Tiled? (AndEngine)

几秒钟后当玩家在特定的图块上移动时,我想在图块图上掉下来。该怎么办?

编辑:我正在开发一个2D平台游戏...我想要当玩家跳上平台时,该平台在指定时间后掉落。

在此处输入图片说明

我向每个图块添加一个自定义属性。 TMX文件:

<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="50" height="50" tilewidth="30" tileheight="30" nextobjectid="1">
<tileset firstgid="1" name="8246060_orig" tilewidth="30" tileheight="30" tilecount="495">
<image source="tile_image/8246060_orig.jpg" width="1000" height="459"/>
<tile id="41">
<properties>
<property name="spring" value="true"/>
</properties>
</tile>
<tile id="42">
<properties>
<property name="spring" value="true"/>
</properties>
</tile>
<tile id="43">
<properties>
<property name="spring" value="true"/>
</properties>
</tile>
</tileset>
<tileset firstgid="496" name="26078133-tile-set-platform-for-game" tilewidth="30" tileheight="30" tilecount="120">
<image source="tile_image/26078133-tile-set-platform-for-game.jpg" width="450" height="257"/>
<tile id="38">
<properties>
<property name="winter" value="true"/>
</properties>
</tile>
<tile id="39">
<properties>
<property name="winter" value="true"/>
</properties>
</tile>
<tile id="40">
<properties>
<property name="winter" value="true"/>
</properties>
</tile>
</tileset>
<layer name="Tile Layer 1" width="50" height="50">
<data encoding="base64" compression="gzip">
   H4sIAAAAAAAAC+3RwRGAIAADwUARYg1q/9VQjJTAS4dhH/vP5HpJOgAAALCkoyZtOOv/W3Z0JbmHJ3Nt9Pruf/wPAAAAwJ5e255BJRAnAAA=
</data>
</layer>

GameScene:

try {
        mTmxLoader = new TMXLoader(activity.getAssets(),
                engine.getTextureManager(), TextureOptions.NEAREST, vbom);
        mTmxLoader = new TMXLoader(activity.getAssets(), engine.getTextureManager(), TextureOptions.BILINEAR_PREMULTIPLYALPHA, vbom, new ITMXTilePropertiesListener() {
            @Override
            public void onTMXTileWithPropertiesCreated(final TMXTiledMap pTMXTiledMap, final TMXLayer pTMXLayer, final TMXTile pTMXTile, final TMXProperties<TMXTileProperty> pTMXTileProperties) {

                if(pTMXTileProperties.containsTMXProperty("spring", "true")) {
                final Rectangle rect=new Rectangle(??);//How do I get the coordinates of a platform
                        final FixtureDef boxFixtureDef = PhysicsFactory.createFixtureDef(0, 0, 1f);
                      Body body=PhysicsFactory.createBoxBody(physicsWorld, rect, BodyType.StaticBody, boxFixtureDef);
                        rect.setVisible(true);
                        attachChild(rect);
                        body.setUserData("spring");
                }
                else if(pTMXTileProperties.containsTMXProperty("winter", "true")){

                }
            }
        }); 

contactListener:

if (x1.getBody().getUserData().equals("spring")
                        && x2.getBody().getUserData().equals("player")) {
                    engine.registerUpdateHandler(new TimerHandler(0.4f,
                            new ITimerCallback() {
                                public void onTimePassed(
                                        final TimerHandler pTimerHandler) {
                                    pTimerHandler.reset();
                                    engine.unregisterUpdateHandler(pTimerHandler);
                                    x1.getBody().setType(
                                            BodyType.DynamicBody);
                                }
                            }));
                }

使用Box2D并创建动态实体。 而当您想要删除该主体时(几秒钟后),只需破坏其主体即可

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM