如何在节点隐藏时禁用SKSpriteNode的physicsBody



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

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。敌人的物理和物理身体仍然在那里,我的英雄正在接触他们。为什么?我希望玩家认为当他获得一定分数时出现了新的敌人,但在代码中它们是随机生成的,我只是不想马上显示它们。所以我需要我的英雄暂时忽略他们。

inside update() method

 if sprite.hidden {
sprite.physicsBody = nil
}

最新更新