我刚开始使用 AndEngine,很难找到好的教程/文档。我正在制作一个 2D 横向卷轴游戏,其中平台和墙壁是随机生成的。用户可以控制玩家的移动(跳跃、向前走)。
我有几个一般性问题:
如何让视差背景仅在玩家移动时滚动?
我是否应该将物理世界重力设置为空,并将重力添加到实际需要它的每个单独对象?我不希望重力影响浮动平台/墙壁。
我如何在玩家移动时为其设置动画(动画行走)?
进行碰撞检测(玩家/敌人、玩家/墙/平台等)的最佳方法是什么?
抱歉,这一次可能有很多问题要问。任何帮助表示赞赏!
这里是关于碰撞过滤器:这里和这里
如果你询问整体碰撞,你可以用精灵来做:heroSprite.collidesWith(enemySprite);
如果碰撞问题得到解决,那么你可以只为你的英雄设置重力和身体(物理身体)(用于跳跃) . 或者做必要的过滤器,把墙做成静态体(固定体不受重力影响)。
动画英雄:
加载纹理:
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( );- 方法参数有很多选择,看看你需要什么。
对不起我的英语,我希望它会帮助你。
如何让视差背景仅在玩家移动时滚动?
我从未使用过视差背景,但我猜背景会随着相机的移动而移动。如果玩家不移动,相机也不应该移动,因此背景也不会移动。
我是否应该将物理世界重力设置为空,并将重力添加到实际需要它的每个单独对象?我不希望重力影响浮动平台/墙壁。
不,使用重力。当创建不受力影响的物体时(因此是不可移动的),您使用该BodyType.StaticBody选项。静态物体不能移动(只能通过代码)。
我如何在玩家移动时为其设置动画(动画行走)?
看看AnimatedSpritesExample。基本上,要为精灵设置动画,它必须从AnimatedSprite类中实例化,并且您需要为它提供一个TiledTextureRegion(包含多个区域,每个区域都有不同的图像)。然后,通过调用类的animate方法AnimatedSprite就可以开始动画了。
进行碰撞检测(玩家/敌人、玩家/墙/平台等)的最佳方法是什么?
如果你打算使用 Box2D,你可以实现一个回调ContactListener,当你的PhysicsWorld.
如果您不打算使用 Box2D,可以使用 AndEngine 的方法进行碰撞检测。这是一个例子。