说我有几枚硬币。当用户收集硬币时,我希望将某个变量设置为true。然后在10秒后,变量重置为false。
假设用户收集硬币。该变量设置为true。 6秒过关。在另一个4中,变量将重置为false。但是,用户现在收集另一枚硬币。还应该增加10秒钟。所以现在,变量将在14秒内重置为假,而不是4。
换句话说,每当用户在变量设置为true时收集硬币时,将向当前剩余的时间添加10秒。时间“增加”。
有人可以建议我怎么做吗?我已经有了代码来检测收集硬币的时间,但其余的都有问题。看起来很简单,但事实证明这是一个非常大的挑战。
这是我到目前为止所尝试的:
if coinCollected {
//Execute this code every time a coin is collected
timeBeforeVariableIsSetToFalse += 10
if variableToBeReset == false {
variableToBeReset = true
runAction(
SKAction.runBlock({
while self.timeBeforeVariableIsSetToFalse > 0 {
self.runAction(SKAction.waitForDuration(NSTimeInterval(1)))
self.timeBeforeVariableIsSetToFalse --
}
self.variableToBeReset = false
})
)
}
}
然而,不是在每次减少timeBeforeVariableIsSetToFalse之间等待一秒钟,它们基本上都是在彼此之后发生的。好像self.runAction(SKAction.waitForDuration(NSTimeInterval(1)))
被忽略了。
答案 0 :(得分:0)
继承人我会做什么:
创建两个在类顶部定义的变量,并且可供所有例程使用。一个(booHasCoin
)判断玩家是否已经拿起一枚硬币(如果你想在屏幕上设置硬币动画或其他东西),另一个(intCounter
)将保持一定数量coin变量设置为false之前的秒数。
var intCounter:Int = Int()
var booHasCoin:Bool = Bool()
每次计时器滴答(将其设置为每秒刻度一次),请运行以下代码:
if intCounter > 0 {
intCounter -= 1
booHasCoin = true
} else {
booHasCoin = false
}
每次玩家拿起一枚硬币时,你只需要运行以下代码:
intCounter = 10
计时器总是滴答作响,如果用户没有拿起硬币,那么intCounter
将等于0并且booHasCoin将等于false。一旦他们拿起硬币,intCounter
将等于10,每秒将减1,直到10秒后,intCounter = 0
和booHasCoin
设置为false
我希望这会有所帮助:)。