将SKSpriteNode定位在0,0?

时间:2015-07-12 07:09:37

标签: swift sprite-kit

我已经读到0,0位于Sprite Kit的左下角,但当我在该位置放置一个精灵时,屏幕上没有显示任何内容。

let squareSprite = SKSpriteNode(color: UIColor.purpleColor(), size: CGSize(width: 100, height: 100))
squareSprite.anchorPoint = CGPoint(x: 0, y: 0)                                  // bottom left corner of square
squareSprite.position = CGPoint(x: 0, y: 0)
addChild(squareSprite)

我错过了什么?

1 个答案:

答案 0 :(得分:0)

这可能是因为您的视图大小和场景大小有不同的尺寸。我想您正在使用默认游戏项目模板,其中场景是从.sks文件加载的(在这种情况下场景大小是1024x768)。如果场景的大小与视图大小不同,即使添加了精灵,它也可能不可见,因为它可能在屏幕外。您可以通过在其他位置添加精灵来测试这一点(例如,x = 300,y = 300)。您可以做的一件事就是简单地改变场景的大小(内部视图控制器),如下所示:scene.size = skView.bounds.size此外,重要的是场景scale mode(来自文档):

  

渲染场景后,其内容将被复制到演示文稿中   视图。如果视图和场景大小相同,那么内容   可以直接复制到视图中。如果两者不同,那么   场景缩放以适合视图。 scaleMode属性确定   如何缩放内容。

除此之外,我建议您阅读有关如何在视图控制器中初始化场景的this,还有关于viewDidLoadviewWillLayoutSubviews方法的争论。

与您的问题无关,但您可能会发现更改定位点不会影响节点的物理主体。它是purely visual property

希望这有帮助。