Swift 3初学者-在场景中放置资源

Swift 3初学者-在场景中放置资源,swift,sprite-kit,cgpoint,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.fr

我是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)
它按预期定位在底部中心


我不明白为什么会发生这种情况,因为在这一点上,本教程中几乎没有其他操作会导致错误。

将场景的
主播点设置在
移动开始时的左下角(toView:SKView)
(或在
GameViewController
):

请记住,您在场景中放置的所有内容都是基于
主播点
放置的。因此,使用此
主播点
,场景的原点位于左下角

还要注意,如果使用
.AspectFill
作为
场景缩放模式
,则不必使用
self.frame
,而是将场景大小设置为768x1024(纵向)/1024x768(横向),然后只需使用场景大小中的数字值即可

此外,将场景<代码>主播点
设置到中心也有好处:

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

这使得场景更容易适应iPad大小和iPhone大小,也简化了节点的居中


查看此链接以了解有关使应用程序通用的更多信息:

您应该在问题中添加更多代码,内容太广泛。什么是地面规模,主播点?原点?所以,全局设置锚点给了我更多的控制,谢谢。如果我选择删除.AspectFill并使用精确的值,这个值会缩放到不同的显示吗?@MartinJones Using.AspectFill会缩放场景以适应所有大小。这时,您可以使用精确的值,因为它可以扩展到设备的任何大小。有关更多信息,请参阅此链接:@您可以在GameViewController和/或希望其影响的每个场景中设置它。在场景中进行任何放置之前,请尝试调用它,因为调用它之前的任何内容都不会受到它的影响。@Yes。当我说1024x1024时,我的意思是只针对背景图像。很抱歉给你带来了困惑。这样,背景就不会被拉伸到更大的iPad尺寸,而且对于iPad来说尺寸相当合适,并且图像的侧面(或顶部边缘,如果是横向的话)会被切掉以供参考iPhone@Nik另一个原因是,在scene.anchorPoint = CGPoint(x: 0, y: 0)