这是一个仅用纯色替换整个纹理的解决方案:
sprite.texture = PIXI.Texture.WHITE
显然,这不适用于透明的精灵。任何透明度最终也将保持稳定。 (产生一个实心矩形)
如何更改精灵的非透明像素的颜色?
(由于所有子画面都必须是白色,因此着色不会起作用)
答案 0 :(得分:2)
据我所知,Pixi无法做到这一点。根据Pixi维护者here的说法,您可以使用pixi-heaven软件包(https://github.com/gameofbombs/pixi-heaven)中的深色调。此确切示例在其自述文件中列出:
制作一种颜色的整个精灵:
sprite.tint = 0xffaacc; sprite.color.dark[0] = sprite.color.light[0]; sprite.color.dark[1] = sprite.color.light[1]; sprite.color.dark[2] = sprite.color.light[2]; //dont forget to invalidate, after you changed dark DIRECTLY sprite.color.invalidate();
答案 1 :(得分:0)
您可以将custom filter应用于精灵。 “过滤器”为PixiJS's term for a shader。
片段着色器应该非常简单。这是两个很好的片段着色器教程:
答案 2 :(得分:0)
在纯PIXI中可以使用ColorMatrixFilter
:
let filter = new PIXI.filters.ColorMatrixFilter();
filter.matrix = [
10, 10, 10, 10,
10, 10, 10, 10,
10, 10, 10, 10,
-1, -1, -1, 1
];
sprite.filters = [filter];
AFAIK tint
和alpha
可能会停止工作,但是您可以在此之后添加其他过滤器(例如AlphaFilter
)以达到类似的效果。