gpt4 book ai didi

swift - 增加/减少 waitForDuration()?

转载 作者:行者123 更新时间:2023-11-28 13:15:00 25 4
gpt4 key购买 nike

我想知道是否可以使用变量增加 withForDuration( )。简而言之,这就是我试图做到的。这也是 SpriteKit,这是我第一次使用它,所以我还是有点不确定。虽然这段代码可以改变 float ,但它实际上并没有改变 waitForDuration(difficulty)

var timer: NSTimer!
var difficulty = 1.0


override func didMoveToView(view: SKView) {
backgroundColor = SKColor.whiteColor()

player.position = CGPoint(x: size.width * 0.5, y: size.height * 0.25)
player.physicsBody = SKPhysicsBody(circleOfRadius: player.size.width/2)
player.physicsBody?.dynamic = true

addChild(player)

physicsWorld.gravity = CGVectorMake(0, 0)
physicsWorld.contactDelegate = self

var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "increaseDifficulty", userInfo: nil, repeats: true)

runAction(SKAction.repeatActionForever(
SKAction.sequence([
SKAction.runBlock(addEnemy),
SKAction.waitForDuration(difficulty)
])
))
}

func increaseDifficulty() {
difficulty -= 0.1
}

最佳答案

一种方法是使用runAction 函数completionHandler。例如。

func addEnemyWithChangingDifficulty() {

let waitAction = SKAction.waitForDuration(difficulty)
let addEnemyAction = SKAction.runBlock { () -> Void in
self.addEnemy()
}

runAction(SKAction.sequence([addEnemyAction,waitAction]), completion: { () -> Void in
self.addEnemyWithChangingDifficulty()
})
}

另一种方法是使用更新函数来跟踪waitDuration

var lastAddedTime : CFTimeInterval = 0

override func update(currentTime: CFTimeInterval) {

if currentTime - lastAddedTime > CFTimeInterval(difficulty) {
addEnemy()
lastAddedTime = currentTime
}
}

关于swift - 增加/减少 waitForDuration()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29338516/

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