【发布时间】:2015-02-04 19:33:12
【问题描述】:
在我的 SpriteKit 项目中,我有一个 spawnEnemy 方法。我希望这个方法被一遍又一遍地调用,以便敌人在整个游戏中继续产生。
我所做的就是将spawnEnemy 方法放在SKAction runBlock 中,并让我的SKScene 永远运行该操作,并在两次调用之间延迟(以防止应用程序过载)。
下面是相关代码的sn-p:
var _spawnSpeedSeconds: Double = 2.0
func startSpawning()
{
let waitForXSeconds = SKAction.waitForDuration(self._spawnSpeedSeconds)
let spawn = SKAction.runBlock({ () -> Void in
self.spawnEnemy()
})
self.runAction(SKAction.repeatActionForever(SKAction.sequence([spawn, waitForXSeconds])), withKey: "spawnEnemy")
}
func spawnEnemy()
{
...
}
现在经过一段时间后(例如当玩家获得 5 分或其他东西时),我会降低 _spawnSpeedSeconds 以使敌人在更短的时间内产生更多以增加难度。
问题是,即使我减少了我的 _spawnSpeedSeconds 变量,SKScene 运行的生成动作的延迟仍然是相同的。
我能想到的解决此问题的唯一方法是删除该动作,然后以新的延迟/生成率重新添加该动作。有没有更好的方法来解决这个问题?
谢谢
【问题讨论】:
-
我目前使用 Objective-C 编码,所以我无法提供一个快速的示例。在这种情况下,我通常会创建一个递归方法。在这种方法中,我创建了一个等待动作和一个运行相同方法的动作。这样你就可以更好地控制“延迟”时间,你甚至可以在里面有你自己的条件如果不清楚,如果它有效,请告诉我。
-
@JadFeitrouni 感谢您的评论。我想我明白了,但我只是想确定一下,你能提供一个 sn-p 代码吗? Objective-C 应该没问题,因为我熟悉该语言。
-
动作有速度属性
标签: ios swift sprite-kit