【发布时间】:2016-03-28 15:30:00
【问题描述】:
目标:
我有粒子从屏幕顶部落下,我希望它们在分数达到一定值时提高速度。
上一次失败的尝试:
我首先制作了那些受重力影响的下落粒子,并尝试在分数达到一定值时增加重力值。但是它似乎不起作用,所以我认为在游戏过程中不能改变重力。
现状:
经过一番研究,我想到了使用两个全局 NSTimer,slowTimer 和 fastTimer。 slowTimer 在 didMoveToView 中调用。在touchesBegan,每次点击,我都会调用一个函数,changeSpeed,就是这样:
func changeSpeed()
{
if score >= 2
{
slowTimer.invalidate()
makeWallsDividerT = 300
fastTimer = NSTimer.scheduledTimerWithTimeInterval(1.4, target: self, selector: Selector("makeWalls"), userInfo: nil, repeats: true)
}
}
makeWallsDividerT是function makeWalls中的一个变量,被fastTimer调用。
当前情况的问题:
当游戏结束并且一切都被重置时,我执行fastTimer.invalidate() 并且似乎仍然存在问题,因为它没有重置为慢定时器。此外,似乎两个计时器都在重置后打开,游戏比 fastTimer 快得多。
请指点一下?或者任何其他方式来实现我想要做的事情? 谢谢!!
【问题讨论】:
-
如何创建粒子?这有点令人困惑,因为粒子通常是指
SKEmitterNode发射的粒子。顺便说一句,使用SKActions而不是NSTimer...SKActions与游戏循环配对。 -
我很好奇 changeSpeed 被调用了多少次,您可能有多个计时器被触发,但 fastTimer 只保留您最后分配的计时器,其他计时器无法失效。跨度>
-
@Knight0fDragon:游戏开始时,我希望 slowTimer 只被调用一次,直到得分达到 2。然后它将在游戏的其余部分使用 fastTimer,直到游戏结束。然后当游戏重新开始时,它会再次是slowTimer,直到得分为2,然后是fastTimer,直到游戏结束。随着游戏的进行,相同的循环将发生多次。谢谢!!
-
您是说每次调用 touchBegans 时,您都在改变速度,这就是我问我的问题的原因。如果您每次点击都没有使 fastTimer 无效,那么您将触发许多计时器
-
@Knight0fDragon 啊 icc!感谢那。请问您有什么建议吗?我想做的是:stackoverflow.com/questions/36265482/…
标签: ios swift sprite-kit swift2