繁体   English   中英

Swift SKView textureFromNode出错

[英]Swift SKView textureFromNode goes wrong

我通过玩游戏开始学习敏捷,并遇到了一些问题。
我正在做一个瓷砖游戏。 我创建了一个带有一些孔的白色瓷砖6x6板,在它们上面我创建了将颜色移动的瓷砖。

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

然后我想,为什么不将背景图块制作成整个精灵,然后我去尝试,但是遇到了问题。

如您在第二张图片中看到的,白色图块和彩色图块不匹配其位置。 他们之间有一点差距。 我有一系列的位置,并且图块放置在相同的位置,但是当我创建精灵时,它们移动了一点。

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

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

  • 首次更新调用后实例化所有内容
  • 将另一个sprite添加到backgroundNodes中,该sprite随着屏幕的变大
  • 更改SKTexture过滤模式
  • 作物位置,例如:1.2345-> 1.2

你应该经常使用

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函数中执行某项操作,则将没有成员“视图”,因为尚未将其添加到树中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM