SpriteKit坐标搞砸了

时间:2017-03-18 00:14:09

标签: swift sprite-kit sprite

我正在尝试为我的SKScene添加精灵,但坐标系似乎很奇怪。 [0,0]点位于屏幕中间,而不是像应该的那样位于左下角。我不知道这是怎么发生的,因为我尝试使用我在类似问题中找到的各种方法进行纠正。 这是我的GameViewController类:

class GameViewController: UIViewController {

override func viewDidLoad() {


    super.viewDidLoad()
    if let view = self.view as! SKView? {
        if let scene = MenuScene(fileNamed: "MenuScene"){                    
            scene.scaleMode = .aspectFill
            view.presentScene(scene)
        }

        view.ignoresSiblingOrder = true
        view.showsFPS = true
        view.showsNodeCount = true

    }
}

我尝试更改了scaleMode,它只改变了精灵的比例并且没有解决问题。我也尝试将MenuScene(fileNamed :)更改为MenuScene(size:view.bounds.size),这给了我错误。如果我遗漏任何细节,请询问。

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为默认情况下,SKScenes的anchorPoint为(0.5,0.5)。这将点(0,0)放在中心。如果您想将anchorPoint更改为左下角,请将其添加到didMoveToView的开头:

self.anchorPoint = CGPoint(x: 0, y: 0)

或者在呈现场景之前使用该anchorPoint初始化场景(来自GameViewController):

scene.anchorPoint = CGPoint(x: 0, y: 0)

或在场景编辑器中更改它。

仅供参考:CGPoint(x: 0, y: 0)CGPoint.zero

相同

就个人而言,我发现从中心向外构建场景更容易,因为它使对称更容易,并且更容易布置HUD,而不是从角落,这导致从角落构建场景,可能造成困难。