SKSpriteNode没有正确的scalling

时间:2016-04-23 00:46:46

标签: ios swift sprite-kit skspritenode

我正在使用Swift& amp; SpriteKit。当我为“重新启动”按钮添加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

更新

我将scene!.scaleMode = .AspectFill放在didMoveToView函数内部,这有助于正确渲染SpriteNode的形状。但我仍然必须setScale(0.001)使重启按钮的大小适合屏幕。任何人都可以帮助我,我还缺少哪些代码?

2 个答案:

答案 0 :(得分:0)

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

这使用了Sprite Kit的调整大小公式。

答案 1 :(得分:0)

我也碰到了这个。它发生在我忘记指定场景的大小时。而不是调用initWithSize我只是写了init,并且场景开始按x1000缩小所有节点。节点是可见的,但它们需要0.001的分级