2015-05-08 3 views
1

Я пытаюсь приостановить свой фон, когда узел моего героя вступает в контакт с противником. Когда я использую этот код, который я разместил ниже, скорость фона не останавливает его, и он продолжает свою нормальную скорость. Я пробовал объявлять «город» только глобально, но я получаю сообщение об ошибке Attempted to add a SKNode which already has a parent. Что я делаю не так?Как бы приостановить мой фон, когда мой heroNode вступает в контакт с врагомNode в Swift Spritekit?

class GameScene: SKScene, SKPhysicsContactDelegate {  
    let city = SKSpriteNode(imageNamed: "skyline") 
} 

override func didMoveToView(view: SKView) { 
    repeatCity() 
} 


func addCity() { 
    let city = SKSpriteNode(imageNamed: "skyline") 
    let moveToRight = SKAction.moveByX(-1000, y: 0, duration: 5.0) 
    let repeatAction = SKAction.repeatActionForever(moveToRight) 



    city.position = CGPointMake(self.size.width/0.7, self.size.height/1.9) 
    city.zPosition = 13 
    city.setScale(0.9) 
    city.runAction(repeatAction) 
    addChild(city) 


} 

func repeatCity() { 
    let generateBlocks = SKAction.sequence([ 
     SKAction.runBlock(self.addCity), 
     SKAction.waitForDuration(3.5)]) 
    let endlessAction = SKAction.repeatActionForever(generateBlocks) 
    runAction(endlessAction) 

} 
    func didBeginContact(contact:SKPhysicsContact){ 

    if firstBody.categoryBitMask == HeroCategory && fourthBody.categoryBitMask == EnemyCategory { 

     city.speed = 0 
     theHero.physicsBody?.affectedByGravity = true 
     println("contactwithEnemy!!!") 

    } 
} 

ответ

0

Первая проблема в том, что вы объявляете переменный класс city, но в методе add использовать не переменную класс, но собственный город-переменный. Таким образом, вы должны удалить этот переменный класс:

let city = SKSpriteNode(imageNamed: "skyline") 

Теперь на данный момент, действие, которое вы когда-либо повторить для на ваш city узле продолжает работать. Для того, чтобы остановить это действие, которое вы должны удалить все действия из city узла при контакте:

self.removeAllActions() 
+0

Его все еще двигается, когда я добавляю его к контакту между героем и врагом. – newtocoding

+0

Действительно ли происходит ли в didBeginContact? – Christian

+0

да я поставил println() и есть контакт – newtocoding