2014-12-28 2 views
2

В настоящее время я работаю над игрой с помощью Spritekit. В игре есть объекты, которые появляются в верхней части экрана и падают в сторону персонажа игрока, и игра заканчивается, когда персонаж игрока сталкивается с любым из объектов. Я пытаюсь найти способ постепенно ускорить игровой процесс с течением времени, чтобы сделать игру сложнее (т.е. объекты падают с нормальной скоростью, когда игра начинается, через 5 секунд ускоряется на 50%, после того, как еще 5 секунд ускорят еще 50% ad infinitum.)Любой способ ускорить геймплей постепенно в Swift?

Должен ли я использовать NSTimer для обратного отсчета, чтобы увеличить гравитацию, применяемую к падающим объектам? Извините, если это базовая вещь, я немного новичок в программировании.

Спасибо, Джейк

EDIT:

Мой метод мицелий для enemies-

let spawn = SKAction.runBlock({() in self.spawnEnemy()}) 
let delay = SKAction.waitForDuration(NSTimeInterval(2.0)) 
let spawnThenDelay = SKAction.sequence([spawn, delay]) 
let spawnThenDelayForever = SKAction.repeatActionForever(spawnThenDelay) 
self.runAction(spawnThenDelayForever) 

И мой метод для изготовления врагов fall-

func spawnEnemy() { 
    let enemy = SKNode() 
    let x = arc4random() 
    fallSprite.physicsBody = SKPhysicsBody(rectangleOfSize: fallSprite.size) 
    fallSprite.physicsBody.dynamic = true 
    self.physicsWorld.gravity = CGVectorMake(0.0, -0.50) 
    enemy.addChild(fallSprite) 
} 
+0

Вы хотите, чтобы объекты падали быстрее или больше, чтобы появляться в течение того же периода времени? – erdekhayser

+0

Я хочу, чтобы они падали быстрее. – Jake

+0

Можете ли вы показать метод «update:» и/или метод, из которого вы создаете новый спрайт? – erdekhayser

ответ

3

В spawnEnemy(), вы комплект self.physicsWorld.gravity. Переместите эту строку на ваш метод update:.

Если вы не отслеживаете продолжительность игры прямо сейчас, вы захотите ее реализовать. Для этого вы можете использовать параметр метода update:.

Затем вы можете использовать продолжительность игры для изменения силы тяжести.

Например,

override func update(currentTime: CFTimeInterval) { 
    if gameState == Playing{ 
     //update "duration" using "currentTime" 
     self.physicsWorld.physicsBody = CGVectorMake(0.0, -0.50 * (duration/10.0)) 
    } 
} 

10.0 может быть изменен в зависимости от того, как быстро вы хотите, чтобы сила тяжести, чтобы увеличить. Более высокое число заставляет его менять менее резко, а меньшее число увеличивает силу гравитации довольно быстро.

Надеюсь, это ответит на ваш вопрос.

+0

Большое спасибо, это прекрасно – Jake

Смежные вопросы