Swift SKView textureFromNode 出错了
Posted
技术标签:
【中文标题】Swift SKView textureFromNode 出错了【英文标题】:Swift SKView textureFromNode goes wrong 【发布时间】:2015-06-27 20:26:06 【问题描述】:我是通过做游戏开始学swift的,遇到了一些问题。 我正在做一个瓷砖游戏。我创建了一块 6x6 的白色瓷砖板,上面有一些孔,在它们上面我创建了可以移动彩色的瓷砖。
白色瓷砖是静态的 色块动态然后我想,为什么不让背景图块成为一个完整的精灵,我就去做了,但我遇到了问题。
正如您在第二张图片中看到的那样,白色瓷砖和彩色瓷砖的位置不匹配。他们之间有一点差距。我有一个位置数组,并且图块放置在同一位置,但是当我创建精灵时,它们会移动一点。
let boardTexture = self.view?.texture(from: backgroundNodes)
boardBackground = SKSpriteNode(texture: boardTexture)
搜索和阅读后,我尝试了所有这些但没有帮助:
在第一次更新调用后实例化所有内容 向 backgroundNodes 添加另一个屏幕更大的精灵 更改 SKTexture 过滤模式 作物位置例如:1.2345 -> 1.2【问题讨论】:
【参考方案1】:你应该总是使用
SKView().texture(from: SKNode, crop: CGRect)
否则你很容易得到工件。 Crop 通常应该是
CGRect(x:-size.width/2, y:-size.height/2, width:size.width, height:size.height)
如果您的节点的默认锚点为 0.5 0.5(即中心)。使用它会给你你想要的大小。你也不需要这个
self.view?.texture(from:backgroundNodes)
相反,直接说
SKView().texture(from:backgroundNodes)
并且您可以避免在某处保留参考。此外,如果您在 sknode 子类的 init 函数中执行某些操作,则不会有成员“视图”,因为它尚未添加到树中。
【讨论】:
以上是关于Swift SKView textureFromNode 出错了的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3.0:当给定非 SKView 父级时,SKSpriteNode 作为 Button 不起作用?
Swift SKView textureFromNode 出错了
如何使用 Swift 在 Playground 中获取用户交互事件