1

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

我有几个一般性问题:

如何让视差背景仅在玩家移动时滚动?

我是否应该将物理世界重力设置为空,并将重力添加到实际需要它的每个单独对象?我不希望重力影响浮动平台/墙壁。

我如何在玩家移动时为其设置动画(动画行走)?

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

抱歉,这一次可能有很多问题要问。任何帮助表示赞赏!

4

2 回答 2

2

这里是关于碰撞过滤器:这里这里
如果你询问整体碰撞,你可以用精灵来做: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( );- 方法参数有很多选择,看看你需要什么。

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

于 2012-11-12T15:09:48.357 回答
1

如何让视差背景仅在玩家移动时滚动?

我从未使用过视差背景,但我猜背景会随着相机的移动而移动。如果玩家不移动,相机也不应该移动,因此背景也不会移动。

我是否应该将物理世界重力设置为空,并将重力添加到实际需要它的每个单独对象?我不希望重力影响浮动平台/墙壁。

不,使用重力。当创建不受力影响的物体时(因此是不可移动的),您使用该BodyType.StaticBody选项。静态物体不能移动(只能通过代码)。

我如何在玩家移动时为其设置动画(动画行走)?

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

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

如果你打算使用 Box2D,你可以实现一个回调ContactListener,当你的PhysicsWorld.

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

于 2012-11-12T15:06:59.880 回答