увеличить скорость игры и поддерживать одинаковое расстояние между узлами - PullRequest
0 голосов
/ 21 сентября 2018

Я работаю над игрой, в которой у меня две функции.Первая функция используется для создания ряда препятствий.Переменная gameSpeed ​​используется для определения частоты добавления нового ряда препятствий.Пример: если я установлю gameSpeed ​​на 3, то каждые 3 секунды будет добавляться новая строка препятствий.

func addobstalce() {
    lastYieldTimeInterval += timeSinceLastUpdate
    if lastYieldTimeInterval > gameSpeed {
        lastYieldTimeInterval = 0
        nextRow(cR: currentRow)
    }
}

, а вторая функция используется для добавления к ним движения.эта функция имеет переменную с именем travelSpeed.Сейчас я установил для travelSpeed ​​значение 8.

func addMovement (obstacle : SKSpriteNode) {
    let move = SKAction.move(to: CGPoint(x: obstacle.position.x, y: self.size.height/1.5), duration: TimeInterval(travelSpeed))
    let remove = SKAction.removeFromParent()
    let both = [move,remove]
    moveAndRemove = SKAction.sequence(both)
    obstacle.run(moveAndRemove)
}

, поэтому при выполнении вышеуказанного кода каждые три секунды добавляется новое препятствие, и этому препятствию требуется 8 секунд для перехода из нижней части экрана в верхнюю часть экрана.

но по ходу игры я хочу увеличить скорость всей игры.Я могу изменить переменные travelSpeed ​​и gameSpeed, но при этом расстояние между двумя препятствиями не остается неизменным.Как мне увеличить скорость моей игры, сохраняя при этом одинаковое расстояние между двумя препятствиями.

Я использую оператор switch для регулирования переменных travelSpeed ​​и gameSpeed, но я готов использовать и другие методы.

switch obstaclesMade {
    case 10:
        //  increase speed by changing travelSpeed and/or gameSpeed
    case 20:
        //  increase speed by changing travelSpeed and/or gameSpeed
    case 30:
        //  increase speed by changing travelSpeed and/or gameSpeed
    default:
        break
}

Вот функция, которая добавляет препятствия

        func addRow (type :rowType){
        let obst1 = addObstacle(type: .small)
        let obst2 = addObstacle(type: .small)
        let obst3 = addObstacle(type: .small)
        obst1.position = CGPoint(x: self.frame.minX + obst1.size.width/2, y: obst1.position.y)
        obst2.position = CGPoint(x: self.frame.midX, y: obst1.position.y)
        obst3.position = CGPoint(x: self.frame.maxX - obst1.size.width/2, y: obst1.position.y)
        addChild(obst1)
        addChild(obst2)
        addChild(obst3)
        addMovement(obstacle: obst1)
        addMovement(obstacle: obst2)
        addMovement(obstacle: obst3) }

Спасибо за вашу помощь.

...