SKSpriteNode 具有相对于屏幕的大小

SKSpriteNode with a size relative to the screen

我正在尝试创建一个 'modal' SKSpriteNode 来填满屏幕的大部分,每边减去一个边框。我有一个 SKSpriteNode 的子类,因为我需要将一些其他信息传递给它以用于显示目的,所以我有一个自定义的 init 方法。

初始化模态框后,我将尺寸设置如下:

    let modal = Modal(items: [Item])
    let newSize = CGSize(width: (frame.width) - 40, height: (frame.height) - 40)

    modal.size = newSize
    modal.zPosition = 999
    addChild(modal)

问题是我的模态框顶部或底部没有边框,它垂直填充整个屏幕。我的模态自定义 'init' 方法调用 super.init 传递一个 50,50 的大小,所以即使它应该比屏幕小很多,如果那是它正在使用的,但它不是。我的游戏处于横向模式,我尝试切换上方的宽度和高度,但它填满了整个屏幕(因此左右两侧都没有边框)。我知道我没有在上面的代码中设置位置,但即便如此,如果它不统一,我希望在晚上的某个地方看到一个 'border'。

这都是在我的主场景文件中完成的,所以这里的frame是指游戏主场景的frame。

有什么想法吗?

所以对于其他有类似问题的人来说,问题是我的场景是从 SKS 文件加载的。

有问题的 SKS 文件的大小设置为自由形式。将其更改为特定设备,例如 iPhone 6 并确保将方向设置为横向已解决大小调整问题