Swift 3初学者 - 场景中的位置资产

时间:2016-10-07 11:37:21

标签: swift sprite-kit cgpoint

我是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)

它按预期位于底部中心。

我不明白为什么会发生这种情况,因为此时教程中没有其他任何操作可以导致错误。

1 个答案:

答案 0 :(得分: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,并且还简化了居中节点。

请参阅此链接,详细了解如何让您的应用更加通用:iOS Universal Device App with SpriteKit, how to scale nodes for all views?