gpt4 book ai didi

ios - SWIFT: "didBeginContact"函数中的 If 语句运行次数过多

转载 作者:行者123 更新时间:2023-11-30 14:08:13 25 4
gpt4 key购买 nike

我的问题是,即使射弹只击中邪恶Flappy一次,其中包含scoreUpOne()的if语句也会运行太多次。这是我的代码:

func scoreUpOne() {
if scoreUp == true{
scoreLabel = scoreLabel++
myScene.scoreLabel.text = "\(scoreLabel)"
scoreUp = false
}
}


func evilFlappyRespawnTimer(timer : NSTimer){
evilFlappy.position = CGPointMake(940, 320)
evilFlappy.hidden = false
}


func didBeginContact(contact: SKPhysicsContact) {
if (contact.bodyA.node?.name == "projectile" && contact.bodyB.node?.name == "bottomBolt"){
projectile.hidden = true
}else if (contact.bodyA.node?.name == "projectile" && contact.bodyB.node?.name == "topBolt"){
projectile.hidden = true
}else if (contact.bodyA.node?.name == "topBolt" && contact.bodyB.node?.name == "projectile"){
projectile.hidden = true
}else if (contact.bodyA.node?.name == "bottomBolt" && contact.bodyB.node?.name == "projectile"){
projectile.hidden = true


}

if (contact.bodyA.node?.name == "projectile" && contact.bodyB.node?.name == "evilFlappy") {
projectile.hidden = true
evilFlappy.hidden = true


scoreUp = true
scoreUpOne()
NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: "evilFlappyRespawnTimer:", userInfo: nil, repeats: false)

}
else if (contact.bodyA.node?.name == "evilFlappy" && contact.bodyB.node?.name == "projectile"){

evilFlappy.hidden = true
projectile.hidden = true
scoreUp = true
scoreUpOne()
NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: "evilFlappyRespawnTimer:", userInfo: nil, repeats: false)


}
if (contact.bodyA.node?.name == "flappy" && contact.bodyB.node?.name == "sprite") {
gameOver()
}
else if (contact.bodyA.node?.name == "sprite" && contact.bodyB.node?.name == "flappy") {
gameOver()
}

问题是这些 if 语句运行了太多次,导致分数上升了不止一分:

if (contact.bodyA.node?.name == "projectile" && contact.bodyB.node?.name == "evilFlappy") {
projectile.hidden = true
evilFlappy.hidden = true


scoreUp = true
scoreUpOne()
NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: "evilFlappyRespawnTimer:", userInfo: nil, repeats: false)

}
else if (contact.bodyA.node?.name == "evilFlappy" && contact.bodyB.node?.name == "projectile"){

evilFlappy.hidden = true
projectile.hidden = true
scoreUp = true
scoreUpOne()
NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: "evilFlappyRespawnTimer:", userInfo: nil, repeats: false)


}

如何才能让弹丸每击中邪恶Flappy 一次,分数只上升一分?

如有任何建议,我们将不胜感激。谢谢。

最佳答案

你为什么还要使用 ScoreUp?没有理由有这个条件。

如果分数增加,则更新 UI。您可以在分数变量上设置键值观察 (KVO) 以查看其何时更新并相应地更新 UI。或者,您可以在分数更新时发布通知,并且您的 View 可以监听并更新。

关于ios - SWIFT: "didBeginContact"函数中的 If 语句运行次数过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32081007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com