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

标签 textures libgdx particles

我将 libgdx 项目的所有图像都放在单个纹理中。

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

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

最佳答案

是的,可以但是您需要将纹理放在TextureAtlas中。看看this article为了它。

这是一个我什至使用TextureAtlas的示例:

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

或者分两步:

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

关于textures - libgdx 粒子效果可以使用纹理区域吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22531814/

相关文章:

python - 渲染到纹理 - 细节级别

ios - RoboVM Studio - LibGDX - UnsatisfiedLinkError - IOS 模拟器不工作?

algorithm - 如何旋转粒子系统(大小为 =num_particles*3 的二维矩阵),以便某些条目变为零

ios - SKEmitterNode角度问题

textures - 如何在 WebGL 中将不同的纹理映射到立方体的不同面?

c++ - 将位置写入纹理 OpenGL/GLSL

objective-c - 翻转 OpenGL 纹理

java - 使用 LibGDX 创建角色选择屏幕

java - 如何使用 ViewPorts 为 libgdx 中的不同分辨率缩放 ImageButtons?

swift - 在 SceneKit 中创建爆炸粒子系统