Swift SKView textureFromNode出错了

时间:2015-04-20 22:06:03

标签: ios iphone swift skview sktexture

我开始通过制作游戏来学习,并遇到了一些问题 我正在做一个平铺游戏。我创建了一块带有一些孔的6x6白色瓷砖板,在它们的顶部我创建了一块可以移动它的瓷砖。

  • 白色瓷砖是静态的
  • 彩色瓷砖是dinamic

然后我想,为什么不把背景瓷砖变成一个完整的精灵,我就去了,但我遇到了问题。

正如您在第二张图片中看到的那样,白色瓷砖和彩色瓷砖与其位置不匹配。他们之间有一点差距。我有一个位置数组和瓦片放在相同的位置,但是当我创建精灵时,它们会被移动一点点。

let boardTexture = self.view?.texture(from: backgroundNodes)
boardBackground = SKSpriteNode(texture: boardTexture)

在搜索和阅读后,我尝试了所有这些,但没有帮助:

  • 首次更新呼叫后实例化所有内容
  • 添加到backgroundNodes,另一个更大的精灵,如屏幕
  • 更改SKTexture filteringMode
  • 作物位置地点ex:1.2345 - > 1.2

1 个答案:

答案 0 :(得分:4)

总是使用

SKView().texture(from: SKNode, crop: CGRect) 

否则你很容易得到文物。作物通常应

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函数中做某事,那么就没有成员" view"因为它还没有被添加到树中。