我是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)
它按预期位于底部中心。
我不明白为什么会发生这种情况,因为此时教程中没有其他任何操作可以导致错误。
答案 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?