我刚开始使用AndEngine,很难找到好的教程/文档。 我正在制作2D侧滚动游戏,其中平台和墙壁是随机生成的。 用户可以控制玩家的移动(跳跃,向前走)。
我有几个一般性问题:
如何在播放器移动时才能让视差背景滚动?
我应该将物理世界的引力设置为空,并将重力加到实际需要的每个物体上吗?我不希望重力影响浮动平台/墙壁。
如何在播放器移动时动画播放(动画行走)?
进行碰撞检测的最佳方法是什么(玩家/敌人,玩家/墙/平台等)?
对不起,这可能是一次要求很多。 任何帮助表示赞赏!
答案 0 :(得分:2)
以下是碰撞过滤器:here和here
如果你整体询问碰撞,那么你可以用精灵来做: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。