【问题标题】:SpriteKit coordinates messed upSpriteKit 坐标搞砸了
【发布时间】:2017-03-18 00:14:08
【问题描述】:

我正在尝试将精灵添加到我的 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) 这给了我错误。如果我遗漏任何细节,请询问。

【问题讨论】:

    标签: swift sprite-kit sprite


    【解决方案1】:

    这是因为默认情况下,SKScene 的锚点为 (0.5, 0.5)。这会将点 (0,0) 置于中心。如果您希望将锚点更改为左下角,请将其添加到 didMoveToView 的开头:

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

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

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

    或者在场景编辑器中改变它。

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

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

    【讨论】:

    • 谢谢。它像你说的那样工作。我更喜欢在拐角处使用 0、0,因为它允许您在使用代码定位节点时使用 size.width 或 size.height * % of screen。
    • @CarterGrycko 没有问题。一切都与偏好有关
    猜你喜欢
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多