我想在我需要之前隐藏一些敌人。但问题是 - 无论如何,英雄正在与他们的物理生物互动。我正试着这样做:
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 :(得分:-3)
内部update()方法
if sprite.hidden {
sprite.physicsBody = nil
}