为什么我的SKSpriteNodes出现在场景中?

时间:2014-08-10 22:11:54

标签: swift sprite-kit skspritenode

我正在尝试向场景中添加几个节点。当我运行应用程序时,我只有默认的灰色背景。这两个节点都不会出现在场景中。这就是我所拥有的:

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        /* Setup your scene here */

        let jumper = SKSpriteNode(imageNamed:"Jumper")
        jumper.xScale = 0.25
        jumper.yScale = 0.25
        jumper.position = CGPointMake(50, 300)

        self.addChild(jumper)

        let blob = SKSpriteNode(imageNamed:"Blob")
        blob.position = CGPointMake(160, 30)
        blob.xScale = 0.5
        blob.yScale = 0.25

        self.addChild(blob)
    }

我检查了图像标题,一切都正确。

1 个答案:

答案 0 :(得分:9)

问题

您的精灵不可见,因为您的场景并非完全位于模拟器的窗口内。默认情况下,场景的大小为1024 x 768(由GameScene.sks指定),而模拟器仅显示375 x 667点(如果您选择了iPhone 6 / 6s模拟器)。除非正确设置了场景的大小,否则模拟器窗口的左下角将不是场景的(0,0)位置。

要解决此问题,

方法1:

在GameScene.sks中更改场景的大小属性以匹配视图的大小。我建议你将场景大小设置为375 x 667(iPhone 6 / 6s)。如果您执行此操作并将场景的scaleMode属性设置为.AspectFill(默认值),SpriteKit将自动缩放场景以适合iPhone 6 +,6s +,5的视图和5s。这将节省您将游戏移植到这些设备的时间。

方法2: 在视图控制器中,替换此

scene.scaleMode = .AspectFill

用这个

scene.scaleMode = .ResizeFill

警告:使用此方法可行,但可能需要额外的工作才能将游戏移植到屏幕尺寸不同的其他iOS设备上。