2015-07-22 20 views
2

我想在我需要它們之前隱藏一些敵人。但問題是 - 英雄無論如何都要與他們的物理寶寶互動。我試圖做到這一點,像這樣:如果隱藏節點,如何禁用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.showsPhysics和敵人的物理屍體還在那裏,我的英雄與他們聯繫。爲什麼?我希望玩家認爲當他有一定的得分時會出現新的敵人,但是在代碼中他們是隨機產生的,我只是不想馬上給他們看。所以我需要我的英雄暫時忽略他們。

+0

,我建議你只生成貓需要在遊戲中,當他們。 – 0x141E

+0

由於某些情況,它不適合我。 – TimurTest

+1

您是否嘗試將'contactTestBitMask'和'collisionBitMask'設置爲0. – 0x141E

回答

-2

內update()方法

if sprite.hidden { 

sprite.physicsBody = nil 

}