Есть ли способ присваивать и вызывать переменные в SKSpriteNode? - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь создать игру, в которой пользователь касается мяча, и он добавляет к своему счету, если он касается мяча с нужным номером.

Я поместил ярлык на мяче, чтобы отобразитьномер шара.

когда пользователь нажимает на шар, я хочу, чтобы он проверил метку на шаре и сравнил ее с переменной, чтобы увидеть, совпадают ли они.

я пытался вызватьзначение 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 голосов
/ 10 апреля 2019

Либо найдите дочерний узел метки с помощью childNode(withName:), либо просто измените имя узла ball.name = "String(ballNumber)" и проверьте узел, к которому вы, возможно, прикоснулись

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