AnimatedSprite显示的大小错误

时间:2015-04-01 11:48:13

标签: android andengine

很抱歉,如果之前遇到此问题。我一直在搜索,但我没有发现任何有关此问题的帖子,所以我在这里发布了这个问题。

我在Andengine上真的很新。我正在尝试加载Tiled Sprite并使用它创建动画。 这是我的代码:

public void loadGameResources() {
    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/player/");
    mSapoTextureAtlas = new BitmapTextureAtlas(mActivity.getTextureManager(),256,178,TextureOptions.DEFAULT);
    mPlayerDownITiledTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(mPlayerTextureAtlas, mActivity.getAssets(), "player.png", 0,0,3,1);
    mPlayerTextureAtlas.load();

}

我的期望是玩家可以做一些行动,比如走路,但我没有。请参阅附带的屏幕截图以查看实际结果。我认为我的代码将原始纹理分成3个部分,而不是在第一行分割3个精灵。

请看看并帮我解决这个问题。非常感谢!

enter image description here enter image description here enter image description here enter image description here 以下是我创建动画的方法:

AnimatedSprite player= new AnimatedSprite(100,100,40,40,mResourceManager.mPlayerDownITiledTextureRegion,mVertexBufferObjectManager);
player.animate(500);
player.setZIndex(100);
attachChild(sapo);

2 个答案:

答案 0 :(得分:1)

我的理解是你想要在每个方向上正确地为玩家制作动画。为此

根据图书馆方法

  

BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(pBitmapTextureAtlas,pAssetManager,pAssetPath,pTextureX,pTextureY,pTileColumns,pTileRows);

您的代码将更改如下

mSapoTextureAtlas = new BitmapTextureAtlas(mActivity.getTextureManager(),256,256,TextureOptions.DEFAULT);
mPlayerDownITiledTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(mPlayerTextureAtlas, mActivity.getAssets(), "player.png", 0,0,3,4);

要向不同方向的播放器制作动画,请使用此技巧 将数组定义为

long[] ANIMATE_DURATION = new long[] { 200, 200, 200 };

AnimatedSprite player = new AnimatedSprite(x, y, this.mPlayerTextureRegion,this.getVertexBufferObjectManager());



// Down
player.animate(ANIMATE_DURATION, 0, 2, true);
// Up
player.animate(ANIMATE_DURATION, 9, 11, true);
// Right
player.animate(ANIMATE_DURATION, 6, 8, true);
// Left
player.animate(ANIMATE_DURATION, 3, 5, true);

查看此Example以获取更多信息。

如果您有疑问,请问我。希望这有帮助!

答案 1 :(得分:0)

首先:Atlas应该是2的幂,所以将它的大小改为256x256。 第二:

  mPlayerDownITiledTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(mPlayerTextureAtlas, mActivity.getAssets(), "player.png", 0,0,3,1);

最后两位数表示您拥有的行数和列数。你声明了3列和1行。

三:只有你有这么多层才需要100的Zindex。如果不是你不需要它。