ios - 将 SKCameraNode 用于通用应用程序 SWIFT

标签 ios swift sprite-kit universal skcameranode

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

我在关卡编辑器中的场景是 750x3334。 在我的场景中,我有一张背景图片,背景图片会根据场景大小进行调整。

  • 场景 anchor =(0,1)左上

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

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

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

camera

创建场景:

 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+,我在顶部边缘有一个空白区域(场景外)。

explain

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

最佳答案

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

要让你的相机居中,你需要做

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

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

关于ios - 将 SKCameraNode 用于通用应用程序 SWIFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38900509/

相关文章:

html - 更改 ios 上多选输入的默认文本

swift - 如何发现字典数组中有重复数据

ios - 从数组中的动态坐标对 Google 标记移动进行动画处理

ios - 在 Touches 中获取 SKSpriteNode 的属性

ios - Swift 4 SpriteKit 检测联系人

ios - SKEmitterNode的粒子生命周期到底是什么?

ios - 升级到xcode 4.6和iOS 6.1后的警告用作先前参数的名称,而不用作选择器的一部分

ios - Xcode 7.3 破坏了 UI 测试 - 拆解后不再正常工作

swift - .writeValue 不会让我将十六进制字符串写入特征以启用通知

iphone - Objective-C 属性规则