2015-07-12 60 views
-1

我读过0,0是在Sprite Kit的左下角,但是当我在这个位置放置一个精灵时,屏幕上没有任何东西显示出来。位置SKSpriteNode在0,0?

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

[在SpriteKit中处理不同的iOS设备分辨率](http://stackoverflow.com/questions/25205882/dealing-with-different-ios-device-resolutions-in-spritekit) –

回答

0

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

后,其内容被复制进入 视图。如果视图和场景大小相同,则内容 可以直接复制到视图中。如果两者不同,则场景将缩放以适合视图。 scaleMode属性决定了内容如何缩放的 。

在此之上,我建议你阅读this有关如何在视图控制器初始化场景,这里还讨论有关viewDidLoad VS viewWillLayoutSubviews方法。

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

希望这会有所帮助。