Sprite-Kit:改变接触点的颜色

Sprite-Kit: change the contact points color

我想做的是 合并 两个 sprite 接触边界 当它们相互接触时。换句话说:我想将两个精灵接触点的颜色更改为场景背景颜色。我试着用 blendMode 属性 来做到这一点。但似乎 blendMode 属性 仅适用于节点及其父节点。

blendMode 属性 是否仅适用于节点及其父节点?如果是的话,有什么方法可以改变两个"normal sprite nodes"的触点的颜色吗?

感谢任何想法。

编辑:

提前致谢。

混合模式只会将纹理混合在一起,除非您应用异或混合之类的东西,否则它不会移除黑色边框。实际的精灵会混合到目标帧缓冲区,而不是父级,因此在渲染它时精灵下面的任何东西。

Blending the Sprite into the Framebuffer The final stage of rendering is to blend the sprite’s texture into its destination framebuffer. The default behavior uses the alpha values of the texture to blend the texture with the destination pixels. However, you can use other blend modes when you want to add other special effects to a scene.

You control the sprite’s blending behavior using the blendMode property. For example, an additive blend mode is useful to combine multiple sprites together, such as for fire or lighting. Listing 2-6 shows how to change the blend mode to use an additive blend.

来源:https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Sprites/Sprites.html

为了达到您的要求,我什至不会搞混,而是将您的精灵分解为 2 个子精灵、边框和内部颜色。

我的意思是假设您有一个半径为 10 且厚度为 1 像素的圆。我们创建一个节点,它有一个子节点,它只是一个半径为 10 的透明区域的边界,另一个子节点的半径为 9,它将被白色填充。

将边框 zposition 设置为 0 将内部精灵的 zposition 设置为 10.

当 2 个 sprite 合并在一起时,绘图将如何渲染

精灵1边框 精灵 2 边框 里面的雪碧1 精灵 2 里面

这将为您提供您正在寻找的精灵合并在一起的效果。

当然,如果你的内部是透明的而不是纯色的,那么我们有 问题。 (现在你说你的背景是白色的,所以我们不需要透明度,你的圆圈是白色的,但是如果你想在背景上加上纹理,那我们就有问题了。)

如果你确实想保留你的圈子"transparent",那么你需要做的是在绘制边框之前捕捉下面的背景,并将其作为你内圈的纹理