Я делаю игру с птицами. Кажется, у меня проблема, когда моя птица проходит каждую стену/собирает монету. Есть 2 проблемы. 1 игра задерживается на миллисекунду после сбора. 2 У моей птицы, кажется, есть 2 или даже 3 столкновения, каждый раз создавая счет 2 или 3, я не могу обдумать это!Столкновение обнаружено несколько раз.
Моя птица представляет собой 5 текстурных анимаций, с физическим телом, которое обертывает вокруг своей сложной формы с текстурой: bird.texture! тип кода.
Я пытаюсь понять это в течение 4 дней, и теперь его перерывы на моем приложении большое время! Пожалуйста, помогите !!!
func createScene(){
let bird1 = SKTexture(imageNamed: "1")
let bird2 = SKTexture(imageNamed: "2")
let bird3 = SKTexture(imageNamed: "3")
let bird4 = SKTexture(imageNamed: "4")
let bird5 = SKTexture(imageNamed: "5")
let birdAnimation = SKAction.repeatForever(SKAction.animate(with: [bird1, bird2, bird3, bird4, bird5], timePerFrame: 0.1))
let flyForever = SKAction.repeatForever(birdAnimation)
bird = SKSpriteNode(texture: bird1)
bird = CGSize(width: 65, height: 65)
bird = CGPoint(x: self.frame.width/1.5 - bird, y: self.frame.height/2)
bird(flyForever, withKey: "birdFly")
bird = SKPhysicsBody(texture: bird.texture!, size: CGSize(width: bird.size.width, height: bird.size.height))
bird.physicsBody?.categoryBitMask = physicsCategory.bird
bird.physicsBody?.collisionBitMask = physicsCategory.ground | physicsCategory.wall
bird.physicsBody?.contactTestBitMask = physicsCategory.ground | physicsCategory.wall | physicsCategory.score
bird?.affectedByGravity = false
bird.physicsBody?.isDynamic = true
self.addChild(bird)
func didBegin(_ contact: SKPhysicsContact) {
let firstBody = contact.bodyA
let secondBody = contact.bodyB
if firstBody.categoryBitMask == physicsCategory.score && secondBody.categoryBitMask == physicsCategory.bird{
score += 1
scoreLabel.text = "\(score)"
firstBody.node?.removeFromParent()
run(SKAction.playSoundFileNamed("tap.caf", waitForCompletion: false))
if score > UserDefaults().integer(forKey: "HIGHSCORE") {
saveHighScore()
}
}
else if firstBody.categoryBitMask == physicsCategory.bird && secondBody.categoryBitMask == physicsCategory.score{
score += 1
scoreLabel.text = "\(score)"
secondBody.node?.removeFromParent()
run(SKAction.playSoundFileNamed("tap.caf", waitForCompletion: false))
if score > UserDefaults().integer(forKey: "HIGHSCORE") {
saveHighScore()
}
}
func createWalls(){
let scoreNode = SKSpriteNode(imageNamed: "bird")
scoreNode.size = CGSize(width: 40, height: 40)
scoreNode.position = CGPoint(x: self.frame.width + 25, y: self.frame.height/2)
scoreNode.physicsBody = SKPhysicsBody(rectangleOf: scoreNode.size)
scoreNode.physicsBody?.affectedByGravity = false
scoreNode.physicsBody?.isDynamic = false
scoreNode.physicsBody?.categoryBitMask = physicsCategory.score
scoreNode.physicsBody?.collisionBitMask = 0
scoreNode.physicsBody?.contactTestBitMask = physicsCategory.bird