SKSpriteNode
)精灵1 和精灵2 ,黑色边框和透明背景。 我尝试做的是合并两个精灵接触边界,当他们互相联系时。换句话说:我想将两个精灵的接触点颜色更改为场景背景颜色。我尝试使用blendMode
属性执行此操作。但似乎blendMode
属性仅适用于节点及其父节点。
blendMode
属性是否仅适用于节点及其父节点?如果是,有没有办法改变两个"正常精灵节点的接触点的颜色"?
感谢任何想法。
修改
提前致谢。
答案 0 :(得分:1)
混合模式只会将纹理混合在一起,除非您应用Xor Blending之类的东西,否则它不会删除黑色边框。实际的精灵会混合到目标帧缓冲区,而不是父帧,因此渲染时精灵下面的任何东西都是。
将Sprite混合到Framebuffer中 渲染的最后阶段是将精灵的纹理混合到其目标帧缓冲区中。默认行为使用纹理的Alpha值将纹理与目标像素混合。但是,如果要向场景添加其他特殊效果,可以使用其他混合模式。
使用blendMode属性控制精灵的混合行为。例如,添加剂混合模式可用于将多个精灵组合在一起,例如用于火或照明。清单2-6显示了如何更改混合模式以使用添加剂混合。
为了实现您所寻找的目标,我甚至不会混淆混合,而是将您的精灵分解为2个子精灵,边框和内部颜色。
我的意思是假设你有一个半径为10且厚度为1像素的圆圈。我们创建一个节点,该子节点只是半径为10的透明区域的边框,另一个半径为9的子节点将填充白色。
将边框zposition设置为0 将内部精灵zposition设置为10。
当2个精灵合并在一起时,以下是渲染的绘制方式
精灵1边框 精灵2边框 精灵1里面 精灵2里面的
这将为您提供将精灵合并在一起时所寻找的效果。
当然,如果你的内部有透明而不是纯色,那么我们就有了 问题。 (现在你说你的BG是白色的,所以我们不需要透明度,你的圆圈可能是白色的,但是如果你想在BG上放一个纹理,那么我们就有问题了。)
如果你确实想要保持你的圆圈“透明”,那么你需要做的是在绘制边框之前捕捉下面的背景,并使你的内圈的纹理