Swift 3 初学者 - 在场景中定位资产

Swift 3 Beginner - Position Assets in Scene

我是 Swift 3 和一般编程的完全初学者,所以这将是一个非常基础的问题。

我一直在学习教程,目前正在使用 CGPoint 定位 SpriteNode。本教程推荐以下方法将节点定位在屏幕底部的中央:

Ground.position = CGPoint(x: self.frame.width / 2, y: 0)

但是,这会导致它停留在屏幕的右上角。

当我使用以下代码时:

Ground.position = CGPoint(x: 0 - self.frame.width / 2, y: 0 - self.frame.height / 2)

它按预期定位在底部中心。

我不明白为什么会发生这种情况,因为此时教程中几乎没有其他内容会导致错误。

将场景的 anchorPoint 设置到 didMove(toView: SKView) 开头的左下角(或 GameViewController):

scene.anchorPoint = CGPoint(x: 0, y: 0)

请记住,您放置在场景中的所有内容都是基于 anchorPoint 放置的。所以对于这个anchorPoint,场景的原点是左下角。

另请注意,如果您使用 .AspectFill 作为 sceneScaleMode,则不必使用 self.frame,而是将场景大小设置为 768x1024(纵向)/ 1024x768(风景)则只需使用场景大小内的数值。

此外,将场景 anchorPoint 设置为中心还有一些好处:

scene.anchorPoint = CGPoint(x: 0.5, y: 0.5)

这使得场景更容易适合 iPad 大小以及 iPhone,并且还简化了居中节点。

查看此 link 了解有关使您的应用程序通用的更多信息: