Swift 1.2 SpriteKit坐标系原点
Swift 1.2 SpriteKit coordinate system origin
不知道是不是Swift1.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。)
我卡在这了。任何帮助将不胜感激,谢谢!
有几件事。首先,请确保您的 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)
不知道是不是Swift1.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。)
我卡在这了。任何帮助将不胜感激,谢谢!
有几件事。首先,请确保您的 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)