Swift SKView textureFromNode出错了

问题描述 投票:1回答:1

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

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

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

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

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

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

  • 在第一次更新调用后实例化所有内容
  • 添加到backgroundNodes另一个像屏幕一样大的精灵
  • 更改SKTexture filteringMode
  • 作物位置地点:1.2345 - > 1.2
ios iphone swift skview sktexture
1个回答
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”,因为它还没有被添加到树中。

© www.soinside.com 2019 - 2024. All rights reserved.