我开始通过制作游戏来学习快速,并遇到了一些问题。 我正在做一个平铺游戏。我创建了一块带有一些孔的6x6白色瓷砖板,在它们的顶部我创建了一块可以移动它的瓷砖。
然后我想,为什么不把背景瓷砖做成一个完整的精灵,我就去做,但我遇到了问题。
正如您在第二张图片中看到的那样,白色瓷砖和彩色瓷砖与其位置不匹配。他们之间有一点差距。我有一个位置数组和瓦片放在相同的位置,但是当我创建精灵时,它们会移动一点点。
let boardTexture = self.view?.texture(from: backgroundNodes)
boardBackground = SKSpriteNode(texture: boardTexture)
搜索和阅读后,我尝试了所有这些,但没有帮助:
你应该经常使用
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”,因为它还没有被添加到树中。