В моем проекте SpriteKit у меня есть метод spawnEnemy
. Я хочу, чтобы этот метод вызывался снова и снова, чтобы враги продолжали появляться на протяжении всей игры.Как изменить wait for duration SKAction, выполняемый SKScene?
Что я сделал, чтобы добиться этого поставить метод spawnEnemy
в SKAction runBlock
и у меня SKScene
бега, что действие навсегда с задержкой между вызовами (для предотвращения перегрузки приложения).
Ниже приведен фрагмент кода соответствующего кода:
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, поэтому я не смогу предоставить быстрый пример. Что я обычно делаю в этой ситуации, я создаю рекурсивный метод. В этом методе я создаю действие wait и действие, выполняющее тот же метод. Таким образом, у вас будет больше контроля над временем задержки, и вы даже можете иметь собственные условия внутри. Сообщите мне, если это неясно, и если это будет работать. –
@JadFeitrouni Спасибо, что комментировали. Я думаю, что я понял, но я просто хочу убедиться, вы можете предоставить фрагмент кода? Цель-C должна быть прекрасной, так как я знаком с языком. – aresz
действия имеют свойство скорости – LearnCocos2D