【问题标题】:Swap colors in Libgdx在 Libgdx 中交换颜色
【发布时间】:2015-07-24 09:34:49
【问题描述】:

我正在开发一款策略游戏,每个单元有 300-400 张图片。单位将根据其所有者玩家拥有不同颜色的旗帜。但是我的图像是基于蓝色的,所以我想把蓝色换成其他颜色,比如红色、粉色、灰色等。你知道怎么做吗?

【问题讨论】:

  • 有多少种可能的独特颜色?如果只有几个,我会为每种颜色制作不同的精灵。如果很多,我会将标志精灵与角色精灵分开并将它们层叠在一起,然后您可以在运行时为标志精灵着色。或者,您可以创建一组精灵并在它们上运行调色板交换,如下所示:stackoverflow.com/questions/26132160/…
  • @Tenfour04 每种颜色有 8 种独特的颜色和 10 种色调,每个单位有 230 个纹理,而且单位很多,所以我无法为每种颜色制作不同的精灵。此外,我无法分离标志精灵,因为它也制作了很多精灵。在问这个问题之前,我已经研究了你的答案,但我不明白它是如何工作的。你能解释一下吗?
  • 不明白哪一部分?
  • @Tenfour04 如果你想让我说实话,我什么都不懂:/ 我试图阅读代码,但没有很好的注释,而且我对着色器没有足够的了解。如果你能解释一下你的代码的工作逻辑,我可以尝试做类似的事情。
  • 并阅读一些关于 OpenGL ES 中的着色器如何工作的内容……有很多网站对其进行了详细解释。你可以试试这个。它进入您无需担心的 3D 照明。但是只要对顶点着色器和片段着色器的功能有一个基本的了解。

标签: colors libgdx


【解决方案1】:

SpriteBatch 类有一个 setColor() 方法。当您准备好渲染要为其添加动态颜色的 Sprite 时,请执行以下操作:

batch.setColor(new Color(Color.RED));
sprite.draw(batch);
batch.setColor(old_batch_color);

您想重置为旧的批次颜色,这样您的新 SpriteBatch 颜色就不会影响在此特定精灵之后绘制的所有内容。您也可以通过在为任何特定 Sprite 调用 sprite.draw(batch) 之前始终设置正确的 SpriteBatch Color 来避免这种情况,但是如果您忘记这样做,我建议的方式会更安全。

【讨论】:

  • 谢谢你的提示,但我不想改变所有精灵的颜色,我只想改变一个区域的颜色。
猜你喜欢
  • 2015-09-12
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多