有没有一种方法可以在SKSpriteNode中分配和调用变量?

时间:2019-04-10 09:11:53

标签: swift sprite-kit skspritenode

我正在尝试创建一个用户触摸球的游戏,如果用户触摸带有正确数字的球,它会增加他们的得分。

我在球上贴了标签以显示球号。

当用户按下球时,我希望它检查球上的标签并将其与变量进行比较以查看它们是否匹配。

我试图调用myLabel.text的值,但是xcode告诉我它无效。

什么是将变量存储到SKSpriteNode中的最佳方法,以便在用户按下SKSpriteNode时可以进行比较。

谢谢。

这是我的代码->

func createBallNode(ballNumber: Int) -> SKSpriteNode{
    //set up a ball
    let ball = SKSpriteNode(imageNamed: "ballimage.png")
    ball.size = CGSize(width:200, height:200)
    ball.name = "ballSpriteNode"
    ball.physicsBody = SKPhysicsBody(rectangleOf: ball.frame.size)
    ball.physicsBody?.usesPreciseCollisionDetection = true

    let myLabel = SKLabelNode(fontNamed:"Helvetica")
    myLabel.text = String(ballNumber)
    myLabel.name = "myLabel"
    myLabel.fontSize = 80
    myLabel.fontColor = UIColor.black
    myLabel.position = CGPoint.zero

    ball.addChild(myLabel)
    return ball
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch:UITouch = touches.first!
    let positionInScene = touch.location(in: self)
    let touchedNode = self.atPoint(positionInScene)

    //???

}

1 个答案:

答案 0 :(得分:0)

要么使用childNode(withName:)查找子标签节点,要么只需更改节点名称ball.name = "String(ballNumber)"并检查您可能触摸过的节点

if let touchedNode = touchedNode, touchedNode.name == correctNumber {
    //whatever
}