Spritekit将游戏扩展到iPad

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spritekit将游戏扩展到iPad相关的知识,希望对你有一定的参考价值。

因此,我正在使用Spritekit为iPhone开发Xcode游戏。通过使用node.setScale()方法,它在所有iPhone设备上看起来都很相似。现在我想在iPad上制作通用和可运行的。我怎么这么容易?这个规模有一些公式吗?

我已经尝试过的是:

if UIDevice.current.userInterfaceIdiom == .pad {
        sscale = frame.size.height / 768
    }else{
        sscale = frame.size.height / 320
    }

然后为每个节点创建node.setScale(scale)。

这最终无法正常工作,因为在iPad Mini上它看起来与iPad Air不同......即节点尺寸和位置......

有帮助吗?

答案

你基本上有2个选择。

1)将场景大小设置为1024X768(横向)或768x1024(纵向),并使用默认的.aspectFill进行缩放模式。这是Xcode 7(iPad分辨率)中的默认设置。

你通常只是在iPad的顶部/底部(横向)或左/右(纵向)显示一些额外的背景。

在iPad上显示更多内容的游戏示例:

Altos Adventure,Leos Fortune,Limbo,The Line Zen,Modern Combat 5。

2)Apple将xCode 8中的默认场景大小更改为iPhone 6/7(750 * 1334-Portait,1337 * 750-Landscape)。此设置将在iPad上裁剪您的游戏。

在两个选项之间进行选择取决于您,并取决于您正在制作的游戏。我通常更喜欢使用选项1并在iPad上显示更多背景。

无论场景大小,缩放模式通常最好保留在默认设置.aspectFill或.aspectFit中

要调整设备的标签等特定内容,您可以这样做

 if UIDevice.current.userInterfaceIdiom == .pad {
   // adjust some UI for iPads
 }

我不会尝试做一些随机的黑客,你手动改变差异设备上的场景或节点大小/比例,你应该让xCode / SpriteKit为你做。

希望这可以帮助

另一答案

如果您使用的是SKCameraNode,则可以通过缩放相机来缩放整个场景。

// SKCameraNode+Extensions.swift
extension SKCameraNode {
    func updateScaleFor(userInterfaceIdiom: UIUserInterfaceIdiom) {
        switch userInterfaceIdiom {
            case .phone:
                self.setScale(0.75)
            case .pad:
                self.setScale(1.0)
            default:
                break
        }
    }
}

然后在场景初始化时调用它。

guard let camera = self.childNode(withName: "gameCamera") as? SKCameraNode else {
    fatalError("Camera node not loaded")
}

// Update camera scale for device / orientation
let userInterfaceIdiom = UIDevice.current.userInterfaceIdiom 
camera.updateScaleFor(userInterfaceIdiom: userInterfaceIdiom)

以上是关于Spritekit将游戏扩展到iPad的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit游戏开发适配iPad/iPhone6/7/8/Plus及iPhoneX的尺寸及安全区域

在 SpriteKit 中生成随机地形

使用通用图像资源(SpriteKit 游戏)时背景不适合屏幕

我正在使用 SpriteKit 制作游戏,但我的视图只占据了屏幕上看似安全的区域。如何扩展此视图?

将游戏中心添加到游戏后第一次接触时 Spritekit 游戏场景停止

iOS 7 SpriteKit 游戏 - 保存加载游戏时出错:'尝试将 nil 节点添加到父节点:<SKNode> 名称:'(null)'