Swift 1.2 SpriteKit 坐标系原点

标签 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 进行测试的。)

我被困在这个问题上。任何帮助将不胜感激,谢谢!

最佳答案

有几件事。首先,确保您的 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 有一个中心 anchor ,因此它将把盒子的中心放在左下角,这意味着大约 75% 的 block 将掉出屏幕。

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

    greenBox.anchorPoint = CGPointMake(0, 0)

关于Swift 1.2 SpriteKit 坐标系原点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31315509/

相关文章:

Android 谷歌地图多边形点击事件

java - Canvas 坐标不准确地显示我的位图

ios - 循环字典中的特定键以获取值

ios - 如何使用在函数中创建的 JSON 结果

swift - 在游戏场景中制作一个(游戏结束)弹出窗口

ios - 在 Swift 中放大和缩小 SKSpriteNode

swift - TableView 单元格内的按钮

Swift OSX 第一个运行的方法是什么?

swift - 二元运算符 '>= & <=' 不能应用于 Swift 中 CGFloat 和 Int 类型的操作数

python - 生成美国的随机坐标?