2

我在 Xcode 8 beta 4 上使用 Sprite Kit Level 编辑器开发了一款通用游戏。

我在关卡编辑器中的场景是 750x3334。在我的场景中,我有一个背景图像,背景图像被调整为场景大小。

  • 场景锚点 = (0,1) 左上角

  • 背景锚点 = (0,1) 左上角。

我需要在我的场景中安装一个相机。

我设置了一个比例为 (1,1) 的 SKCameraNode,相机的位置是我场景的中心。

相机

创建场景:

 if let scene = GKScene(fileNamed: "GameScene") {

        if let sceneNode = scene.rootNode as! GameScene? {

            // Copy gameplay related content over to the scene
            sceneNode.entities = scene.entities
            sceneNode.graphs = scene.graphs
            sceneNode.scaleMode = .aspectFill

            if let view = self.view as! SKView? {

                view.presentScene(sceneNode)
                view.ignoresSiblingOrder = true
                view.showsFPS = true
                view.showsNodeCount = true
            }
        }
    }

当游戏启动时,我的相机必须设置为背景的顶部等于设备的顶部边缘。

要做到这一点:

override func sceneDidLoad() {
    camera?.position.y = -UIScreen.main.nativeBounds.size.height/2
}

对于 iPhone 6,它可以完美运行。对于 iPhone 5、6+,我在顶部边缘有一个空白区域(场景外)。

解释

所以也许我的逻辑是错误的......

4

2 回答 2

1

您不应该触摸屏幕大小,您需要使用场景大小。.AspectFill 保持相同的场景大小,无论设备如何,唯一改变场景大小的 scaleMode 是 .ResizeFill

为了让你的相机在中心,你需要做

camera.position = CGPointMake(scene.frame.size.width / 2, scene.frame.size.height / 2)  

注意,场景可能是自己的,我不知道你会在哪里使用这段代码

于 2016-08-11T17:33:51.973 回答
-1

您可以像这样获得用户设备的大小

if(UIScreen.mainScreen().bounds.width == 375 && UIScreen.mainScreen().bounds.height == 667).

这适用于 iPhone 6,您可以搜索尺寸,然后调整相机手册的位置。

于 2016-08-11T17:12:47.260 回答