java - libGDX:根据用户的输入更改 PNG 的颜色

标签 java user-interface libgdx game-engine

我希望你能帮助我。 我有一个游戏,其中加载了透明纹理,并且应该根据用户在游戏开始时的选择(十六进制代码)进行着色。

我的游戏有放置游戏人物的图 block (居中)。 瓷砖是 50x50,我的 png 也是如此。它有一个透明的背景,我的图形的 vector 有透明的东西,应该着色。 它看起来像这样:

enter image description here

我正在使用 libGDX 引擎,由于这个问题我真的很沮丧。 如有任何帮助,我们将不胜感激!

非常感谢!

最佳答案

要在 LibGDX 中以编程方式更改颜色,您需要使用具有白色像素的图像(png 或 jpg),您可以通过将图像分成两部分来实现此效果,其中一部分用于您不需要的部分不希望颜色发生变化,并且希望为您所做的部分改变颜色。 这是一个例子:

Example color

代码:

public class ExampleGame extends InputAdapter {

    SpriteBatch batch;
    Color crownColor;

    public ExampleGame() {
        batch = new SpriteBatch();
        crownColor = Color.WHITE;
    }

    @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {
        crownColor = Color.RED;
        return false;
    }

    public void render(TextureRegion player, TextureRegion crown) {
        batch.begin();
        batch.setColor(Color.WHITE); // Else player will be affected by crownColor too
        batch.draw(player, 0, 0);
        batch.setColor(crownColor);
        batch.draw(crown, 0, 0);
        batch.end();
    }
}

关于java - libGDX:根据用户的输入更改 PNG 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56312450/

相关文章:

java - Box2D 碰撞检测失败

java - 中断 libgdx 碰撞时的 Action

java - 如何在 JavaFX 中实现节点的选择

java - 如何在一定时间内按顺序显示每个图像图标? Java、定时器

ios - 应用程序如何支持 iPhone X 分辨率或屏幕尺寸?

java - Click 中的 JButton 表单

java - 在 Libgdx 中使用 SQLite 数据库

java - Java 8 与 Java 9 之间的内存分配是否存在差异?

java - 如何安排我的 Android 应用程序每小时做一些事情

局部变量的 Java 内存(堆栈)分配