gpt4 book ai didi

swift - runAction() 内的变化值不变

转载 作者:可可西里 更新时间:2023-11-01 01:37:52 27 4
gpt4 key购买 nike

我有一个运行 Action 循环,生成一个敌人然后等待并生成另一个。目的是分数越高,敌人产生的速度就越快。

但目前的代码无论如何都以相同的速度生成敌人。我一直在 override func update(currentTime: NSTimeInterval) 方法中更新速率,所以我不知道哪里出了问题。

override func update(currentTime: NSTimeInterval){
spawnRate = 2.0-(0.1*(Double)(((Double)(Score))/(10.0)))
if(spawnRate < 0.5){
spawnRate = 0.5
}
}
override func didMoveToView(view: SKView) {
runAction(SKAction.repeatActionForever(
SKAction.sequence([
SKAction.runBlock(addEnemy),
SKAction.waitForDuration(spawnRate)
])
))
}

最佳答案

当前发生的事情是您:

  • 在 Action 中存储持续时间参数
  • 一遍又一遍地在序列中重复使用该 Action

所以实际上什么都没有改变。要解决这个问题,一种方法是使用递归调用并每次更改持续时间参数:

import SpriteKit

class GameScene: SKScene {

let shape = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: 20, height: 20))

var delay:NSTimeInterval = 1.0

override func didMoveToView(view: SKView) {

recursiveMethod()

}

func recursiveMethod(){



let recursive = SKAction.sequence([

SKAction.waitForDuration(delay),
SKAction.runBlock({self.recursiveMethod();println("delay \(self.delay)")})
])

runAction(recursive)

}

override func update(currentTime: NSTimeInterval) {
if(delay > 0.2){delay = delay - 0.001}
}

}

关于swift - runAction() 内的变化值不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33858637/

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