将 SKLabelNode 设置为 SKSpriteNode Swift 的中心

Nia*_*hoe 5 xcode objective-c sprite-kit skspritenode swift

我正在尝试将 SKLabelNode 的位置设置为 SKSpriteNode 的中心。我已经看过其他问题,但这些问题都不适用于 Swift 3。

这是我的代码:

    var letter1background = SKSpriteNode(imageNamed: "letterbackground")
    var letter1text = SKLabelNode()

    override func didMove(to view: SKView) {


        letter1background.position = CGPoint(x: self.size.width / 8, y: self.size.height / 7.5)
        letter1background.size = CGSize(width: self.size.width / 8, height: self.size.width / 8)
        letter1background.zPosition = -5

        self.addChild(letter1background)

        letter1text.text = "C"
        letter1text.fontName = "Verdana-Bold "
        letter1text.fontSize = 28
        letter1text.fontColor = UIColor.white
       letter1text.zPosition = 0
       letter1text.horizontalAlignmentMode = letter1background.center
        letter1text.verticalAlignmentMode = letter1background.center

        self.letter1background.addChild(letter1text)


    }
Run Code Online (Sandbox Code Playgroud)

这段代码看起来可以工作,但在 Swift 3 中,我现在收到此错误:

'SKSpriteNode' 类型的值没有成员 'center'

我也试过:

self.letter1text.position = CGPoint(x: letter1background.frame.width/2 - (letter1text.frame.width/2), y: letter1background.frame.height/2 -(letter1text.frame.height/2))
Run Code Online (Sandbox Code Playgroud)

&

letter1text.position = CGPoint(x:letter1background.frame.midX, y:letter1background.frame.midY)
Run Code Online (Sandbox Code Playgroud)

但我仍然得到这样的结果: iphone屏幕

有任何想法吗?

Whi*_*ind 6

您对标签位置的计算是错误的。您只需在 0,0 位置添加一个标签,由于SpriteKit 的坐标系规则(0,0 位于节点的中心),它就会居中。

override func didMove(to view: SKView) {

        let label = SKLabelNode(fontNamed: "Arial")

        label.text = "C"
        label.fontColor = .black
        label.verticalAlignmentMode = .center
        label.fontSize = 29.0
        label.zPosition = 1


        let background = SKSpriteNode(color: .green, size: CGSize(width: 50, height: 50))

        background.addChild(label)

        addChild(background)

    }
Run Code Online (Sandbox Code Playgroud)

你会得到这个:

在此输入图像描述