我正在制作一个游戏,其中有一个节点正在生成并从屏幕顶部掉落。但是我想让节点以 3 秒之间的随机时间间隔生成。因此,1 秒内生成一个,2.4 秒内生成下一个,1.7 秒内生成下一个,依此类推。我正在努力解决这个问题的代码应该是什么。
我目前用于生成节点的代码:
let wait = SKAction.waitForDuration(3, withRange: 2)
let spawn = SKAction.runBlock { addTears()
}
let sequence = SKAction.sequence([wait, spawn])
self.runAction(SKAction.repeatActionForever(spawn))
我的 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
}
不建议您使用NSTimer
与 SpriteKit (参见SpriteKit - 创建计时器)。相反,要生成随机时间,您可以使用SKAction.waitForDuration:withRange:
创建一个空闲一段随机时间的操作。
当操作执行时,操作会等待指定的时间
时间,然后结束……
每次执行该操作时,该操作都会计算一个新的随机数
持续时间的值。持续时间可以在任一方向上变化
最多为价值的一半持续时间范围范围...
要随机生成节点,您可以组合waitForDuration:withRange
with runBlock:
一起在一个SKAction
顺序。例如:
// I'll let you adjust the numbers correctly...
let wait = SKAction.wait(forDuration: 3, withRange: 2)
let spawn = SKAction.run {
// Create a new node and it add to the scene...
}
let sequence = SKAction.sequence([wait, spawn])
self.run(SKAction.repeatForever(sequence))
// self in this case would probably be your SKScene subclass.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)