gpt4 book ai didi

ios - 有什么方法可以在 Swift 中逐渐加快游戏速度?

转载 作者:可可西里 更新时间:2023-11-01 00:38:01 25 4
gpt4 key购买 nike

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

我是否需要使用 NSTimer 进行倒计时以增加应用到下落物体的重力?抱歉,如果这是一件基本的事情,我是编程新手。

谢谢, jack

编辑:

我的敌人生成方法-

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

最佳答案

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

希望这能回答您的问题。

关于ios - 有什么方法可以在 Swift 中逐渐加快游戏速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27679189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com