首页 > 解决方案 > 如何在 Swift 中将 SKTilemap 场景定位在屏幕中间

问题描述

我在 Swift 5 中创建了一个 TilemapScene (CKTilemapScene.sks)。这基本上是为了铺设我的游戏项目的瓦片地图背景。请参阅下面的第二个屏幕截图。

然后,在我的主要 swift 代码中,我使用标准代码加载所有背景。但是,不知何故,瓦片地图没有居中。请参阅下面的第一个屏幕截图。但是,在屏幕的左下方。我试着玩锚点。那没有帮助。我设置错了吗?

导入 UIKit 导入 SpriteKit 导入 GameplayKit

类 GameViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    
    if let view = self.view as! SKView? {

        if let scene = SKScene(fileNamed: "CKTilemapScene") {
            
            // Present the scene
            view.presentScene(scene)
        }
        
        view.ignoresSiblingOrder = true
        
        view.showsFPS = true
        view.showsNodeCount = true
        view.showsPhysics = true
    }
}

override var shouldAutorotate: Bool {
    return true
}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    if UIDevice.current.userInterfaceIdiom == .phone {
        return .landscape
        //.allButUpsideDown
    } else {
        return .all
    }
}

这就是结果,瓦片地图没有集中

这是属性检查器的屏幕截图

标签: swiftskspritenodesktilemapnode

解决方案


将 的位置设置为SKSceneSKView中心。

override func viewDidLoad() {
    super.viewDidLoad()

    if let view = view as? SKView {
        if let scene = SKScene(fileNamed: "CKTilemapScene") {
            scene.position = view.center
            view.presentScene(scene)
        }
    }
    //...
}

推荐阅读