【问题标题】:How to crop out a SKLabelNode from a SKShapeNode?如何从 SKShapeNode 中裁剪出 SKLabelNode?
【发布时间】:2016-10-20 03:08:39
【问题描述】:

我想通过下面的步骤得到上面的效果。


基本上由一个背景图片SKSpriteNode组成

我在它上面添加了一个红色的 SKShapeNode

我想从那个红色 ShapeNode 上剪下 SKLabel 节点。

我有一个可以伪造这种效果的代码。但是,如果你移动形状节点,那么噱头就会暴露出来。

class GameScene: SKScene {

    override func didMove(to view: SKView) {
        let baseNode = SKSpriteNode(imageNamed: "step1")
        baseNode.zPosition = 0
        baseNode.position = CGPoint(x:0,y:100)

        let shapeNode = SKShapeNode(rect: CGRect(origin: CGPoint(x:-155, y:-15), size: baseNode.size))
        shapeNode.fillColor = .red
        shapeNode.zPosition = 1
        addChild(shapeNode)

        let labelNode = SKLabelNode(text: "Hi")
        labelNode.fontColor = .white
        labelNode.fontName = "Arial"
        labelNode.fontSize = 185
        labelNode.zPosition = 2

        let cropNode = SKCropNode()
        cropNode.addChild(baseNode)
        cropNode.maskNode = labelNode
        cropNode.zPosition = 1
        addChild(cropNode)
    }
}

如果我尝试混合模式,它不会带我去任何地方。]

class GameScene: SKScene {

    override func didMove(to view: SKView) {
        let baseNode = SKSpriteNode(imageNamed: "step1")
        baseNode.zPosition = 0
        baseNode.position = CGPoint(x:0,y:100)
        addChild(baseNode)

        let shapeNode = SKShapeNode(rect: CGRect(origin: CGPoint(x:-155, y:-15), size: baseNode.size))
        shapeNode.fillColor = .green
        shapeNode.zPosition = 1
        addChild(shapeNode)

        let labelNode = SKLabelNode(text: "Hi")
        labelNode.fontColor = .red
        labelNode.fontName = "Arial"
        labelNode.fontSize = 185
        labelNode.zPosition = 2
        labelNode.blendMode = .subtract
        shapeNode.addChild(labelNode)

        let circle = SKShapeNode(circleOfRadius: 40)
        circle.position = CGPoint(x:0,y:40)
        circle.fillColor = .green
        circle.blendMode = .subtract
        circle.zPosition = 3
        shapeNode.addChild(circle)
    }
}

【问题讨论】:

  • 这不是一个教程网站,如果您展示一些代码,并进行一些研究,人们将非常乐意为您提供帮助
  • 看看这是否有帮助stackoverflow.com/a/35991707
  • @Whirlwind 不。我想要的是反蒙版效果。您展示的示例只是一个常见的蒙版效果。

标签: objective-c swift xcode sprite-kit skcropnode


【解决方案1】:

如果你换个思路,这会容易得多。

将红色层放在后面/底部。最低 zPosition。对于这个例子,假设-1.0

把图片放在上面,zPosition 0.0

将字母放在上面,zPostion 为1.0

所以,从 iPhone 的屏幕来看,是这样的:

  • 屏幕
  • 图片
  • 红色背景

您想使用字母来掩盖图片。

这样做后,无论何时移动字母,它都会从图片中显示其下方的内容。其他一切都是红色的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2011-06-06
    • 2016-08-27
    • 2014-12-09
    • 2020-09-07
    相关资源
    最近更新 更多