나는이 부분에 갇혀있다. 나는 removeFromParent를 시도해 왔지만 작동하지 않는다. 내 게임에서 적의 콜라이드가 3 번이나 끝났을 때 문제는 몇 초간 계속해서 적을 때 사라지고 플레이어에게 계속 손상을줍니다.게임이 끝났을 때 스프라이트를 제거하는 방법은 무엇입니까?
func didBeginContact(contact: SKPhysicsContact) {
let body1 = contact.bodyA.node as! SKSpriteNode
let body2 = contact.bodyB.node as! SKSpriteNode
if ((body1.name == "circuloPrincipal") && (body2.name == "enemigo")) {
colisionPrincipal(body2)
}else {
((body1.name == "enemigo") && (body2.name == "circuloPrincipal"))
colisionPrincipal(body1)
}
}
func colisionPrincipal(enemigo: SKSpriteNode) {
if hits < 2 && circuloPrincipal.color != enemigo.color{
shakeFrame(scene!)
circuloPrincipal.runAction(SKAction.scaleBy(1.5, duration:0.5))
enemigo.removeFromParent()
let particula = SKEmitterNode(fileNamed: "particulas.sks")
particula?.position = enemigo.position
particula?.hidden = false
particula?.runAction(SKAction.fadeOutWithDuration(0.8))
self.addChild(particula!)
hits += 1
}else if circuloPrincipal.color == enemigo.color {
enemigo.physicsBody?.affectedByGravity = false
enemigo.physicsBody?.dynamic = true
enemigo.removeFromParent()
score += 1
scoreLabel.text = "\(score)"
}else {
shakeFrame(scene!)
gameStarted = false
enemigo.removeFromParent()
enemigoTimer.invalidate()
highscoreLabel.runAction(SKAction.fadeInWithDuration(0.5))
if score > highscore {
let highscoreDefault = NSUserDefaults.standardUserDefaults()
highscore = score
highscoreDefault.setInteger(highscore, forKey: "highscore")
highscoreLabel.text = "Best: \(highscore)"
}
}
}
당신은 정말 많은 작업 할 우리를 포기하지 않을거야 ...
update()
기능에서 그것을 실행할 것입니다. 위의 함수는 어디에서 호출 되었습니까? 논리적 인 것은'gameOver' 변수와 같을 것입니다 (아마도 gameStarted var입니까?) 그런 다음 이것이 사실이라면 어떤 로직을 수행하는지 점검하지 않고 didBeginContact 함수에서 돌아옵니다. –내 질문에 연락처 코드를 입력했습니다. –