在SKSpriteNode中有一种分配和调用变量的方法吗?

问题描述 投票:0回答:1

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

我在球上放了一个标签来显示球号。

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

我试图调用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)

    //???

}
swift sprite-kit skspritenode
1个回答
0
投票

使用childNode(withName:)查找子标签节点,或者只更改节点名称ball.name = "String(ballNumber)"并检查可能触及的节点

if let touchedNode = touchedNode, touchedNode.name == correctNumber {
    //whatever
}
© www.soinside.com 2019 - 2024. All rights reserved.