2015-05-05 2 views
0

У меня есть узел, падающий на вид. Как только он находится за пределами представления, мне нужно удалить его, чтобы я мог использовать оператор if для вызова функции для размещения другого. Как удалить его, когда он больше не отображается? В настоящее время он вызывает функцию только один раз.Как удалить узел, если он отсутствует?

Это функция:

func dot() { 
    var dotTexture = SKTexture (imageNamed: "dot") 
    dotTexture.filteringMode = SKTextureFilteringMode.Nearest 

    var dot = SKSpriteNode(texture: dotTexture) 
    dot.setScale(0.5) 
    dot.position = CGPoint(x: self.frame.size.width * 0.5 , y: self.frame.size.height * 1.1) 

    dot.physicsBody = SKPhysicsBody (circleOfRadius: dot.size.height/2.0) 
    dot.physicsBody?.dynamic = true 
    dot.physicsBody?.allowsRotation = false 

    self.addChild(dot) 

    println("done") 
} 

И это утверждение, если, что вызывает функцию:

override func update(currentTime: CFTimeInterval) { 
    /* Called before each frame is rendered */ 
    if self.children.count == 0 { 
     dot() 
    } 
} 

ответ

1

я найти самый простой способ сделать это, чтобы добавить новый SKNode в в нижней части экрана и используйте столкновение с ним, чтобы удалить точку. Создайте пустой SKNode и установите его положение немного за кадром, а его ширина равна ширине сцены. Затем установите contactTestBitMask, чтобы вы знали, когда точка столкнулась с узлом. Затем удалите точку в методе didBeginContact(SKPhysicsContact: contact)

+0

имеет смысл, спасибо! –

+0

Я использую это при работе с гравитацией. Когда вы говорите «SKAction», который перемещает спрайт за кадром, я добавляю действие «SKAction removeFromParent» с действием движения, чтобы создать последовательность, где, когда я покидаю экран, он удаляет узел. Просто базовая математика для этих вычислений. –

Смежные вопросы