Swift 1.2 SpriteKit坐标系原点

时间:2015-07-09 11:02:02

标签: swift sprite-kit coordinates sprite

我不知道它是否是在Swift 1.2中启动的问题。我是swift和SpriteKit的新手。我正在观看一个在线教程,那个人可以通过以下方式在屏幕的左下角放置一个绿色框:

let greenBox = SKSpriteNode(color: UIColor.greenColor(), size: CGSize(width: 200, height: 200))
let somePoint = CGPointMake(0, 0)
greenBox.position = somePoint
self.addChild(greenBox)

然而,当我尝试同样的事情时,它甚至不会出现在屏幕上!后来,我发现屏幕的左下角实际上接近(300,10)。为什么会这样?

另外,我发现self.frame.size等于(1024.0,768.0),这更令人困惑,因为它与iPhone6的大小无关。 (虽然我正在测试iPhone 6。)

我被困在这里。任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

有一些事情。首先,确保你的gameViewController.swift在viewDidLoad函数中包含此代码:

        self.screenSize = skView.frame.size.width

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill
        scene.size = skView.bounds.size

这将确保您拥有正确的宽高比和iPhone屏幕尺寸。

要获得屏幕的左下角,您可以使用:

        let somePoint = CGPointMake(CGRectGetMinX(self.frame), CGRectGetMinY(self.frame))

最后,我相信greenBox有一个中心锚点,所以它会将盒子的中心放在左下角,这意味着大约75%的块将从屏幕上掉下来。

您可以将锚点更改为绿色框的左下角,以确保它完全显示。

    greenBox.anchorPoint = CGPointMake(0, 0)