在 Sprite Kit 中混合颜色

Posted

技术标签:

【中文标题】在 Sprite Kit 中混合颜色【英文标题】:Mix colour in Sprite Kit 【发布时间】:2015-10-22 14:51:58 【问题描述】:

我是 Sprite Kit 的新手,我想用它来实现一个简单的游戏。我想知道这在 Sprite Kit 中是否可行:

假设我画了两个圆圈,一个是Red,另一个是Green。这两个圆圈之间有一个重叠区域,我希望这个区域的颜色可以自动设置为RED + Green = Yellow,如下图所示。

是否可以使用 Sprite Kit 做到这一点?如果可以,如何设置?

非常感谢任何回复!

【问题讨论】:

【参考方案1】:

您可以将blending mode 与SKEffectNode 结合使用:

class GameScene:SKScene

    override func didMoveToView(view: SKView) 


        let effect = SKEffectNode()

        //Creating shapenodes
        let shape1 = SKShapeNode(circleOfRadius: 50)
        shape1.fillColor = SKColor.redColor()
        shape1.strokeColor = SKColor.clearColor()
        shape1.zPosition = 1
        shape1.blendMode = SKBlendMode.Add

        let shape2 = SKShapeNode(circleOfRadius: 50)
        shape2.fillColor = SKColor.greenColor()
        shape2.strokeColor = SKColor.clearColor()
        shape2.zPosition = 2
        shape2.blendMode = SKBlendMode.Add

        let shape3 = SKShapeNode(circleOfRadius: 50)
        shape3.fillColor = SKColor.blueColor()
        shape3.strokeColor = SKColor.clearColor()
        shape3.zPosition = 3
        shape3.blendMode = SKBlendMode.Add


        //Positioning
        shape1.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))

        shape2.position = CGPoint(x: shape1.position.x - 25, y: shape1.position.y - 50)

        shape3.position = CGPoint(x: shape1.position.x + 25, y: shape1.position.y - 50)

        effect.addChild(shape1)
        effect.addChild(shape2)
        effect.addChild(shape3)

        self.addChild(effect)

    

结果:

【讨论】:

这正是我想要的!谢谢! 还有一个问题。不是用纯色填充圆圈,如果我用彩色纹理填充它(例如带有红色和绿色图案的png图片),是否可以达到类似的效果? @HunTerDRF 是的,您可以使用 SKSpriteNode 并使用纹理对其进行初始化。 谢谢!我会试试看的!

以上是关于在 Sprite Kit 中混合颜色的主要内容,如果未能解决你的问题,请参考以下文章

sprite Kit的奇怪行为

如何在 sprite kit 中引用多个同名的 sprite?

Sprite Kit - 使用 textureFromNode 时 Retina 上的低分辨率纹理

使用 Swift 在 sprite kit 中的多个场景中重用相同的 sprite 节点

如何在Sprite-kit中画一条线

Sprite-kit 主要角色选择器