gpt4 book ai didi

ios - 掩码 SKSpriteNode

转载 作者:行者123 更新时间:2023-11-29 00:04:23 25 4
gpt4 key购买 nike

我向我的 sks 文件添加了几个节点,现在我想向最低的节点 SKSpriteNode 添加一些掩码。结构如下图:

enter image description here

哪里

  • 绿色 - wordInfoHolder
  • 红色 - 标签容器
  • 白色文本 - 标签

现在我想隐藏以红色显示的部分。要执行此类操作,我读到可以使用 SKCropNode

我能够在场景文件中找到所有节点并将它们保存到变量中。

if let holder = childNode(withName: "wordInfoHolder") as? SKSpriteNode {
wordInfoHolder = holder
if let wordSwitchNode = wordInfoHolder?.childNode(withName:"wordSwitchNode") as? SKSpriteNode {
self.wordSwitchNode = wordSwitchNode

if let label = self.wordSwitchNode?.childNode(withName:"infoLabel") as? SKLabelNode {
wordSwitchLabelNode = label
}
}
}

所有 3 个对象均已存储且正确。

现在我想给根对象添加一些掩码。

为此目的,我准备了掩模图像:

enter image description here

并尝试做类似的事情:

  guard let holder = wordInfoHolder else { return }
let positionToSet = holder.position
let mask = SKSpriteNode(imageNamed: "rectangle_mask")
let cropNode = SKCropNode()
holder.removeFromParent()
cropNode.addChild(holder)
cropNode.maskNode = mask
cropNode.position = positionToSet
self.addChild(cropNode)

但我什么也没看到。我希望看到 SKSpriteNode 的绿色部分。

哪里做错了?

最佳答案

假设您已在所有对象上设置 zPosition。

我很确定问题是,因为您将持有者对象从场景移动到cropNode,所以它保留了场景中的位置信息(例如,如果它在场景中的位置为 500, 500,则它的位置在cropNode 现在是 500, 500)

我能够重现您的问题,并且通过将 holder.position 设置为零,问题就消失了。

在下图中,我使用黄色框作为 mask ,蓝色和粉色框是测试对象,以确保裁剪节点放置在它们之间。

enter image description here

if let holder = self.childNode(withName: "holder") as? SKSpriteNode {
self.holder = holder

if let switcher = holder.childNode(withName: "//switcher") as? SKSpriteNode {
self.switcher = switcher
}
}

if let mask = self.childNode(withName: "mask") as? SKSpriteNode {

mask.removeFromParent()

let positionToSet = holder.position
holder.position = CGPoint.zero
mask.position = CGPoint.zero

let cropNode = SKCropNode()
holder.removeFromParent()
cropNode.addChild(holder)
cropNode.maskNode = mask
cropNode.position = positionToSet
cropNode.zPosition = 10
self.addChild(cropNode)
}

添加花絮

holder.move(toParent: cropNode)

可以用来代替

holder.removeFromParent()
cropNode.addChild(holder)

关于ios - 掩码 SKSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com