2016-04-23 69 views
0

我正在开发一个使用Swift的小游戏& SpriteKit。当我为“重新启动”按钮添加SKSpriteNode时,它不能正确缩放。SKSpriteNode不能正常缩放

重新启动按钮的大小是100px的高度和宽度。如果我没有设置比例,它将覆盖整个屏幕并使屏幕显示为白色。我发现如果我只将setScale设置为0.005而不是它出现在屏幕上,但尺寸不合适。

import Foundation 
import SpriteKit 

class EndScene: SKScene { 

    var restartBtn = SKSpriteNode() 


    override func didMoveToView(view: SKView) { 

     background() 
     restartGame() 

    } 


    func restartGame() { 

     restartBtn = SKSpriteNode(imageNamed: "restartBtn") 
     restartBtn.setScale(0.005) 
     restartBtn.position = CGPoint(x: self.size.width/2, y: self.size.height/4) 
     restartBtn.zPosition = 1 

     self.addChild(restartBtn) 
    } 


    func background() { 

     let bkg = SKSpriteNode(imageNamed: "Background") 
     bkg.size = self.frame.size 
     bkg.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2) 
     bkg.zPosition = -2 

     self.addChild(bkg) 
    } 

} 

下面是这段代码的输出, Restart Button Output

UPDATE

我把scene!.scaleMode = .AspectFill右内didMoveToView功能,并在适当的渲染SpriteNode的形状帮助。但仍然需要setScale(0.001)才能使Restart按钮的大小适合屏幕。任何人都可以协助我仍然缺少哪些代码行吗?

回答

0

而不是使用.setScale尝试使用restartBtn.size = CGSize的(宽度:50,高度:50)

这将使用雪碧包的大小调整公式。

+0

我已经尝试过,但它没有给出任何不同的结果。要使用CGSize,我必须将宽度和高度设置为'0.1',以使其在屏幕上可见,并且仍呈椭圆形而不是圆形。 – Haadi

0

我也遇到过这个问题。它发生在我忘记指定场景的大小时。我只是写了init而不是调用initWithSize,场景开始按x1000缩小所有节点。节点是可见的,但它们需要的比例为0.001