如果隐藏节点,如何禁用SKSpriteNode的physicsBody?

时间:2015-07-22 06:38:42

标签: ios swift sprite-kit

我想在我需要之前隐藏一些敌人。但问题是 - 无论如何,英雄正在与他们的物理生物互动。我正试着这样做:

self.cat.hidden = true

if self.cat.hidden == false {
self.hero.physicsBody?.collisionBitMask = ColliderType.Cat.rawValue
self.hero.physicsBody?.contactTestBitMask = ColliderType.Cat.rawValue
}

if self.cat.hidden {
    self.cat.physicsBody = nil
}else{
self.cat.physicsBody = SKPhysicsBody(texture: cat.texture, size: self.cat.size)
self.cat.physicsBody?.dynamic = false
self.cat.physicsBody?.categoryBitMask = ColliderType.Cat.rawValue
self.cat.physicsBody?.contactTestBitMask = ColliderType.Hero.rawValue
self.cat.physicsBody?.collisionBitMask = ColliderType.Hero.rawValue
}
//in didBeginContact
if (contact.bodyA.categoryBitMask == ColliderType.Cat.rawValue && self.cat.hidden == false || contact.bodyB.categoryBitMask == ColliderType.Cat.rawValue && self.cat.hidden == false) {
       eatenByCat()
    }

//in update
if (self.score >= 10) {
      self.cat.hidden = false
                }

我打开了skView.showsPhysics,敌人的身体仍在那里,我的英雄正在联系他们。为什么?我希望玩家认为当他有一定分数时会出现新的敌人,但是在代码中他们是随机产生的,我只是不想马上展示它们。所以我需要我的英雄暂时忽略它们。

1 个答案:

答案 0 :(得分:-3)

内部update()方法

 if sprite.hidden {

sprite.physicsBody = nil

}