gpt4 book ai didi

swift - 在随机时间生成节点组合 waitForDuration :withRange and runBlock: in an SKAction sequence

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

我正在使用 SpriteKit 制作一个游戏,我的节点在屏幕顶部生成并掉落。但是,我希望这些节点以 0.1 到 3 秒之间的随机时间间隔生成。例如,第一个节点在 1.3 秒内生成,下一个节点在 1.8 秒内生成,然后是 2.5 秒,然后是 0.8 秒,等等。我不确定如何利用 waitForDuration 函数来执行此操作。我目前拥有的代码是:

let wait = SKAction.waitForDuration(3, withRange: 2)
let spawn = SKAction.runBlock { addTears()
}

let sequence = SKAction.sequence([wait, spawn])
self.runAction(SKAction.repeatActionForever(spawn))

当我尝试运行此代码时,它卡住了我的游戏。我删除了 addTears() 并放置了一个日志,日志上出现了一个无限循环。我需要知道如何摆脱它。

我的 addTears() 函数的代码是:

func addTears() {
let Tears = SKSpriteNode (imageNamed: "Tear")
Tears.position = CGPointMake(Drake1.position.x, Drake1.position.y - 2)
Tears.zPosition = 3
addChild(Tears)

//gravity
Tears.physicsBody = SKPhysicsBody (circleOfRadius: 150)
Tears.physicsBody?.affectedByGravity = true

//contact
Tears.physicsBody = SKPhysicsBody (circleOfRadius: Tears.size.width/150)
Tears.physicsBody!.categoryBitMask = contactType.Tear.rawValue
Tears.physicsBody!.contactTestBitMask = contactType.Bucket.rawValue
}

最佳答案

如果我没记错的话,waitForDuration:withRange: 方法的工作原理如下:如果你设置3(秒)的持续时间1 秒的范围,你得到的随机值将在 2 到 4 秒之间 .也就是说,您应该将这些值用于您所描述的内容:let wait = SKAction.waitForDuration(1.55, withRange: 1.45)

对于卡住问题,如果您在此处正确粘贴了您的代码,那么此行 self.runAction(SKAction.repeatActionForever(spawn)) 就会出现问题,您应该在其中调用您的 sequence 像这样:self.runAction(SKAction.repeatActionForever(sequence))

PS:在某些时候,您可能还想同时控制屏幕上的撕裂量。

如果有帮助,请告诉我。

关于swift - 在随机时间生成节点组合 waitForDuration :withRange and runBlock: in an SKAction sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30851619/

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