【问题标题】:Any way to speed up gameplay gradually in Swift?有什么方法可以在 Swift 中逐渐加快游戏速度?
【发布时间】:2014-12-28 18:12:18
【问题描述】:

我目前正在使用 Spritekit 开发一款游戏。游戏有物体在屏幕顶部生成并落向玩家角色,当玩家角色与任何物体发生碰撞时游戏结束。我正在尝试找到一种方法来逐渐加快游戏速度以使游戏变得更加困难(即游戏开始时物体以正常速度下落,5秒后加速50%,再过5秒再加速50%,无止境。)

我是否需要使用 NSTimer 进行倒计时以增加应用于坠落物体的重力?对不起,如果这是一个基本的东西,我对编程有点陌生。

谢谢,杰克

编辑:

我的敌人生成方法-

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)

还有我让敌人倒下的方法-

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)
}

【问题讨论】:

  • 您希望物体下落得更快,还是在同一时间段内产生更多物体?
  • 我希望他们跌得更快。
  • 你能显示update: 方法和/或你生成新精灵的方法吗?
  • 我会把它编辑到我的原始帖子中,一秒钟。

标签: ios swift sprite-kit nstimer


【解决方案1】:

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 可以根据您希望重力增加的速度进行更改。数字越大,它的变化就越小,而数字越小,重力增加的速度就越快。

希望这能回答你的问题。

【讨论】:

  • 非常感谢,这太完美了
猜你喜欢
  • 2011-10-22
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多