libgdx粒子效果可以使用纹理区域吗?

时间:2014-03-20 11:39:16

标签: textures libgdx particles

我在一个纹理中为libgdx项目提供了所有图像。

我即将添加一些不错的粒子效果,但文档暗示每种类型的发射器都需要为其粒子提供单独的图形文件。

这是真的吗?或者,有没有办法指定要用作粒子图像的纹理区域,以便我仍然可以将所有图像保存在该单个文件中?

1 个答案:

答案 0 :(得分:2)

是的,它可以你需要在TextureAtlas内加上纹理。请查看this article

这是一个我甚至使用TextureAtlas的例子:

m_effect = new ParticleEffect();
m_effect.load(Gdx.files.internal("particle/effects/lightning.p"), this.getAtlas());

或分2步:

m_effect.loadEmitters(Gdx.files.internal("particle/effects/lightning.p"));
m_effect.loadEmitterImages(this.getAtlas());

这是他LoadEmitterImage做的事情:

public void loadEmitterImages (TextureAtlas atlas) {
    for (int i = 0, n = emitters.size; i < n; i++) {
        ParticleEmitter emitter = emitters.get(i);
        String imagePath = emitter.getImagePath();
        if (imagePath == null) continue;
        String imageName = new File(imagePath.replace('\\', '/')).getName();
        int lastDotIndex = imageName.lastIndexOf('.');
        if (lastDotIndex != -1) imageName = imageName.substring(0, lastDotIndex);
        Sprite sprite = atlas.createSprite(imageName); /// <---- here it creates a Sprite with a textureregion
        if (sprite == null) throw new IllegalArgumentException("SpriteSheet missing image: " + imageName);
        emitter.setSprite(sprite);
    }
}

src from git