2012-11-12 70 views
1

我剛開始使用AndEngine,很難找到好的教程/文檔。 我正在製作一款2D側卷軸遊戲,平臺和牆壁隨機生成。 用戶可以控制玩家的動作(跳躍,向前走)。AndEngine - 一般的2D側滾動問題

我有幾個一般性的問題:

如何獲得視差背景滾動球員動作只有當?

我應該將物理世界引力設置爲無,並將重力加到每個實際需要的物體上?我不希望重力影響浮動平臺/牆壁。

如何在播放器移動時動畫(動畫步行)?

碰撞檢測的最佳方式是什麼(玩家/敵人,玩家/牆/平臺等)?

對不起,這可能是一次很多問。 任何幫助表示讚賞!

回答

1

如何讓視差背景僅在玩家移動時滾動?

我從來沒有使用過視差背景,但我猜測背景會隨着相機的移動而移動。如果玩家不動,相機不應該移動,因此背景也不會移動。

我應該將物理世界引力設置爲無,並將重力加到每個實際需要的物體上?我不希望重力影響浮動平臺/牆壁。

不,使用重力。當創建不受力量影響的物體時(因此不可移動),您使用BodyType.StaticBody選項。靜態物體不能移動(僅限代碼)。

如何在播放器移動時進行動畫製作(動畫步行)?

看一看AnimatedSpritesExample。基本上,要創建一個精靈動畫,它必須從AnimatedSprite類實例化,並且需要提供一個TiledTextureRegion(包含幾個區域,每個區域都有一個不同的圖像)。然後,通過調用AnimatedSprite類的animate方法,您可以開始動畫。

碰撞檢測(玩家/敵人,玩家/牆/平臺等)的最佳方式是什麼?

如果你打算使用Box2D的,你可以實現一個名爲ContactListener回調時的身體在你的PhysicsWorld碰撞將被調用。

如果您不打算使用Box2D,則可以使用AndEngine的方法進行碰撞檢測。 這是example

+0

好吧,你提出另一件事情,我試圖理解。由於我的地形不是預先確定的,我應該將生成的地形還是攝像機移動到播放器的中心位置?我不確定整個相機的工作原理。 –

+0

地形應保持靜止,相機應跟隨播放器(誰移動)。至於相機問題:圖像你的場景是一個巨大的畫布,其上繪製了許多對象。並非全部都是同時顯示的。相機定義顯示該大型畫布的哪個區域。 – Jong

+0

你如何去了解那些無法看到相機的回收機構?一旦地形對象完全移過屏幕左側,我想永久地回收它。玩家不得後退。 –

2

這裏是關於碰撞過濾器:herehere
如果你問的碰撞整體,比你可以用精靈做到這一點: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(); - 有一個大的選擇,Ø f方法參數,看看你需要什麼。

對不起,我希望它能幫助你。

+0

感謝您的碰撞過濾器鏈接。似乎非常方便。 –