AndEngine - 一般2D侧滚动问题

时间:2012-11-12 10:34:44

标签: java android andengine

我刚开始使用AndEngine,很难找到好的教程/文档。 我正在制作2D侧滚动游戏,其中平台和墙壁是随机生成的。 用户可以控制玩家的移动(跳跃,向前走)。

我有几个一般性问题:

如何在播放器移动时才能让视差背景滚动?

我应该将物理世界的引力设置为空,并将重力加到实际需要的每个物体上吗?我不希望重力影响浮动平台/墙壁。

如何在播放器移动时动画播放(动画行走)?

进行碰撞检测的最佳方法是什么(玩家/敌人,玩家/墙/平台等)?

对不起,这可能是一次要求很多。 任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

以下是碰撞过滤器:herehere
如果你整体询问碰撞,那么你可以用精灵来做:heroSprite.collidesWith(enemySprite);
如果碰撞问题解决了,那么你只能为你的英雄(跳跃)设置 gravity 和body(物理体)。或者制作必要的过滤器并将墙壁作为静止体(固定体不受重力影响)。

动画英雄:
加载纹理:
private ITiledTextureRegion hero;

BuildableBitmapTextureAtlas heroTextureAtlas = new BuildableBitmapTextureAtlas(gameController.getTextureManager(), 256, 256, TextureOptions.NEAREST);

this.hero = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(heroTextureAtlas, gameController.getAssets(), "hero.png", 3, 4);

try { heroTextureAtlas.build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(0, 0, 0)); heroTextureAtlas.load(); } catch (TextureAtlasBuilderException e) { Debug.e(e); }

并将其用于动画:heroSprite.animate( ); - 方法参数有很多选择,看看你需要什么。

对不起我的英语,我希望它会对你有所帮助。

答案 1 :(得分:1)

  

如何在播放器移动时才能让视差背景滚动?

我从未使用过视差背景,但我猜测背景随着相机的移动而移动。如果播放器没有移动,则相机不应移动,因此背景也不会移动。

  

我应该将物理世界的引力设置为空,并将重力加到实际需要的每个物体上吗?我不希望重力影响浮动平台/墙壁。

不,使用重力。在创建不受力影响的物体时(因此不可移动),您可以使用BodyType.StaticBody选项。无法移动静态实体(仅限代码)。

  

如何在播放器移动时动画播放(动画行走)?

查看AnimatedSpritesExample。基本上,要为精灵设置动画,必须从AnimatedSprite类进行实例化,并且需要为其提供TiledTextureRegion(包含多个区域,每个区域具有不同的图像)。然后,通过调用animate类的AnimatedSprite方法,您可以开始动画。

  

进行碰撞检测的最佳方法是什么(玩家/敌人,玩家/墙/平台等)?

如果您计划使用Box2D,则可以实现一个名为ContactListener的回调,当您的PhysicsWorld中的实体发生碰撞时,将会调用该回调。

如果您不打算使用Box2D,可以使用AndEngine的方法进行碰撞检测。 这是一个example