2017-03-18 64 views
1

我想添加精灵到我的SKScene,但坐标系看起来很奇怪。 [0,0]点位于屏幕中间,而不是像左下角那样。我不知道这是怎么发生的,因为我曾尝试使用我在类似问题中发现的各种方法进行更正。 这里是我GameViewController类:SpriteKit坐标搞砸了

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

发生这种情况是因为默认情况下,SKScenes的anchorPoint为(0.5,0.5)。这将点(0,0)置于中心。如果你正在寻找的anchorPoint改变到左下,将其添加到didMoveToView的开头:

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

或呈现它(从GameViewController)之前初始化与anchorPoint场景:

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

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

FYI:CGPoint(x: 0, y: 0)相同CGPoint.zero

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

+0

谢谢。它像你说的那样工作。我更喜欢在角落有0,0,因为它允许您在使用代码定位节点时使用size.width或size.height *%的屏幕。 –

+0

@CarterGrycko没有问题。这都是关于偏好 – Nik