0

我正在开发一个有两个功能的游戏。第一个函数用于创建一排障碍物。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) }

谢谢你的帮助。

4

0 回答 0