Я стараюсь, чтобы мой ярлык увеличивал +1 каждый раз, когда спрайт вступает в контакт с узлом контакта, но он увеличивается на большие числа, например, +23. Я думаю, что происходит то, что он учитывает каждую миллисекунду, что спрайт касается узла, но я не знаю, как это исправить. Вот мой Ярлык код узла в DidMoveToView:Почему SKLabelNode слишком сильно увеличивает контакт? (Swift)
score = 0
scoreLabelNode = SKLabelNode(fontNamed:"[z] Arista Light")
scoreLabelNode.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/4)
scoreLabelNode.zPosition = 100
scoreLabelNode.fontSize = 500
scoreLabelNode.alpha = 0.03
scoreLabelNode.text = String(score)
self.addChild(scoreLabelNode)
здесь мой контактный узел:
var contactNode = SKNode()
contactNode.position = CGPoint(x: self.frame.size.width + asteroidTexture.size().height/15 + rocket.size.width, y: 0.0)
contactNode.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(asteroid.size.width/16, self.frame.size.height*2))
contactNode.physicsBody?.dynamic = false
contactNode.physicsBody?.categoryBitMask = scoreCategory
contactNode.physicsBody?.contactTestBitMask = rocketCategory
contactNode.runAction(asteroidsMoveAndRemove)
moving.addChild(contactNode)
и вот мой код, где, когда моя ракета спрайт вступает в контакт с contactNode это приращение:
func didBeginContact(contact: SKPhysicsContact) {
if moving.speed > 0 {
if (contact.bodyA.categoryBitMask & scoreCategory) == scoreCategory || (contact.bodyB.categoryBitMask & scoreCategory) == scoreCategory {
// Rocket has contact with score entity
score++
scoreLabelNode.text = String(score)
println("HIT")
}
else{
gameOver()
}
}
«moving» - это когда мои астрыйские спрайты движутся, контактные узлы перемещаются вместе с ним
Я попробую! –
Отлично, надеюсь, что все будет работать на вас! Обязательно закройте вопрос/выберите ответ, если все ответит и работает правильно :) – PD1ce