0

我有一个由透明背景的 png 创建的 CCSprite。

我希望能够以一种我可以自由定义它是哪种颜色的方式将颜色应用于此精灵,而精灵的实际颜色不会影响我必须添加的每种颜色的数量。

我试过这个:

mySprite.color = ccc3(200,200,255);

试图给我的精灵添加一点蓝色的感觉,但是因为它通过设置将根据精灵的现有颜色显示的色调量来工作,而我的精灵几乎没有任何蓝色(大多数它是黄色的)产生的效果非常粗略,一切都变得非常暗,并且有一种轻微的蓝色,但不是我想要的。

在这种情况下,对我来说理想的效果是添加一个带有非常低 alpha 的浅蓝色蒙版。

有没有一种简单的方法可以在不编写精灵的情况下做到这一点?

我试过使用 CCTexture2D,但没有运气,因为没有内置的颜色处理方法,而且大多数教程只教你如何从图像文件中构建纹理。

4

2 回答 2

1

使用原始精灵的代码很难做到这一点。另一种选择是:

  • 创建一个新的精灵,它只是原始精灵的白色轮廓版本
  • 这个白色精灵的颜色属性现在将完全响应您传入的 RGB 值
  • 所以将你的浅蓝色值传递给白色精灵并正确设置不透明度
  • 然后将其覆盖在您的原始精灵上

有什么好处吗?

于 2011-11-16T16:28:30.263 回答
0

实现此目的的唯一方法是使用适当的 OpenGL 混合函数覆盖(屏蔽)精灵。当您说“添加浅蓝色蒙版”时,这就是您需要做的。你可能会发现这个可视化的 blendfunc 工具很有帮助,如果只是为了了解与蒙版精灵的混合是如何工作的,以及你可以用它实现什么。但是 Cocos2D 对此没有内置支持,因此您必须在 cocos2d 节点的-(void) draw {}方法中恢复为纯 OpenGL。

着色(更改颜色属性)只会通过更改所有 4 个顶点的顶点颜色来修改整个图像的 RGB 通道。

于 2011-11-15T15:15:00.267 回答