首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpriteKit - SKLightNode阴影混合模式

SpriteKit - SKLightNode阴影混合模式
EN

Stack Overflow用户
提问于 2018-08-26 06:25:31
回答 1查看 274关注 0票数 1

我有3个SKLightNodes,每个都是浅色的:红色,绿色和蓝色。我想要的效果是由SKLightNodes生成的阴影具有混合模式。Xcode模拟器

我做了一些photoshop的例子。

这是阴影电流行为:

这是所需的阴影行为:

这可以在SpriteKit中实现吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-27 00:20:07

颜色空间

嗨,首先,请注意有不同的色彩空间。混合两种颜色的结果取决于您要使用的颜色空间。

RGB颜色空间

使用此空间颜色,您可以表示两个光线的交点。

在这种情况下,当两种颜色混合时,交叉点会更亮。

您可以使用blendMode = .add在SpriteKit中获得此效果。

这是完整的代码。

代码语言:javascript
复制
import SpriteKit

class GameScene: SKScene {

    override func didMove(to view: SKView) {

        let red = SKShapeNode(circleOfRadius: 100)
        red.fillColor = .red
        red.blendMode = .add
        red.position = CGPoint(x: 0, y: 0)
        addChild(red)

        let green = SKShapeNode(circleOfRadius: 100)
        green.fillColor = .green
        green.blendMode = .add
        green.position = CGPoint(x: 0, y: 100)
        addChild(green)

        let blue = SKShapeNode(circleOfRadius: 100)
        blue.fillColor = .blue
        blue.blendMode = .add
        blue.position = CGPoint(x: 87, y: 50)
        addChild(blue)
    }
}

结果呢?

CMY色彩空间

该颜色空间表示混合两种流体的真实场景。现在,混合到颜色会产生一种新的更深的颜色。

只需使用blendMode = .multiply ( IO建议使用白色背景),就可以在SpriteKit中获得此效果。

代码语言:javascript
复制
import SpriteKit

class GameScene: SKScene {

    override func didMove(to view: SKView) {

        self.backgroundColor = .white

        let yellow = SKShapeNode(circleOfRadius: 100)
        yellow.fillColor = .yellow
        yellow.blendMode = .multiply
        yellow.position = CGPoint(x: 0, y: 0)
        addChild(yellow)

        let cyan = SKShapeNode(circleOfRadius: 100)
        cyan.fillColor = .cyan
        cyan.blendMode = .multiply
        cyan.position = CGPoint(x: 0, y: 100)
        addChild(cyan)

        let magenta = SKShapeNode(circleOfRadius: 100)
        magenta.fillColor = .magenta
        magenta.blendMode = .multiply
        magenta.position = CGPoint(x: 87, y: 50)
        addChild(magenta)

    }
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52021698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档