很抱歉,如果之前遇到此问题。我一直在搜索,但我没有发现任何有关此问题的帖子,所以我在这里发布了这个问题。
我在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个精灵。
请看看并帮我解决这个问题。非常感谢!
以下是我创建动画的方法:
AnimatedSprite player= new AnimatedSprite(100,100,40,40,mResourceManager.mPlayerDownITiledTextureRegion,mVertexBufferObjectManager);
player.animate(500);
player.setZIndex(100);
attachChild(sapo);
答案 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。如果不是你不需要它。