我正在开发一款具有两种功能的游戏。第一个功能用于创建一行障碍物。 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) }
感谢您的帮助。