gpt4 book ai didi

Swift - Timer.scheduledTimer.timeInterval 问题 - 增加节点生成率

转载 作者:行者123 更新时间:2023-11-30 12:23:16 28 4
gpt4 key购买 nike

我正在制作一个简单的 SpriteKit 游戏,其中元素会掉落,并且我需要根据当前分数来管理元素生成速度。但我对 Timer.scheduledTimer 有疑问。

func manageItemsSpawnSpeed() {
if score < 10 {
itemsSpawnTimeInterval = 1.0
} else if score >= 10 && score < 20 {
itemsSpawnTimeInterval = 0.9
} else if score >= 20 && score < 50 {
itemsSpawnTimeInterval = 0.8
} else if score >= 50 && score < 100 {
itemsSpawnTimeInterval = 0.7
}...

spawnItems() - 在屏幕顶部的随机位置生成项目

func spawnItems() {
self.scene?.addChild(itemController.spawnItems())
}

这是元素生成计时器,目前我仅在游戏开始时调用它

func theSpawntimer() {
Timer.scheduledTimer(timeInterval: TimeInterval(itemsSpawnTimeInterval), target: self, selector: #selector(GameplayScene.spawnItems), userInfo: nil, repeats: true)
}

因此,当分数发生变化时 - itemsSpawnTimeInterval 会更新得很好,但是每次当我再次调用 theSpawntimer() 时,它还会启动额外的 spawnItems(),并且不会增加生成速度 - 它会使游戏中的元素下雨。

请告知我如何在每次 itemsSpawnTimeInterval 更改时调用 theSpawntimer() 而不调用 spawnItems()。可能吗?

最佳答案

为了解决这个问题,我拒绝使用scheduledTimer。相反,我使用了 SKAction:

func theSpawner() {
removeAction(forKey: spawnKey) // remove previous action if running.
let spawnAction = SKAction.run(spawnItems)
let spawnDelay = SKAction.wait(forDuration: itemsSpawnTimeInterval)
let spawnSequence = SKAction.sequence([spawnAction, spawnDelay])
run(SKAction.repeatForever(spawnSequence), withKey: spawnKey) // run action with key so you can cancel it later

关于Swift - Timer.scheduledTimer.timeInterval 问题 - 增加节点生成率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44532540/

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