如何随着时间的推移逐渐加速下降节点?
How to gradually speed up falling nodes over time?
我的屏幕顶部有两个相互平行的点,它们与底部的两个可以通过触摸旋转的圆圈相匹配。我让它们像这样生成:
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
runAction(SKAction.repeatActionForever(
SKAction.sequence([
SKAction.runBlock(generateDots),
SKAction.waitForDuration(1.0)])))
}
func generateDots() {
let count = 2
let index=Int(arc4random_uniform(UInt32(count)))
let dots = SKSpriteNode(imageNamed: "Color\(index+1)")
dots.physicsBody = SKPhysicsBody(circleOfRadius: 10)
dots.physicsBody?.dynamic = true
dots.physicsBody?.affectedByGravity = false
for i in 0..<2 {
dots.physicsBody?.categoryBitMask = UInt32(0x1 << index)
dots.physicsBody?.contactTestBitMask = UInt32(0x1 << index)
}
addChild(dots)
dots.size = CGSizeMake(45, 45)
dots.position = CGPointMake(150, 400)
dots.runAction(
SKAction.moveByX(0, y: -900,
duration: NSTimeInterval(11.5)))
}
}
有没有办法逐渐加快它们下降的速度或逐渐改变 waitForDuration
以便随着时间的推移每 3 秒、然后 2 秒、然后 1 秒和等等?
这完全可行!您只需要添加一些变量。
如果你想改变它们下落的速度,那么你需要创建一个像
这样的变量
Var droptime:NSTimeInterval = 11.5
然后在您的 "dropdot()" 方法中您需要做两件事。
开始时减去或除掉你的 droptime 变量,比如...
掉落时间 -= 1
然后在最后生成下落动作时make it
持续时间:掉落时间
而不是以前的样子。
如果你想让生成时间更短,那么你需要创建一个函数,你可以在每次你想要让场景运行的动作(就像你在 viewdidload 中所做的那样)时触发并编辑它它有可变等待并触发自身。此外,您还需要在 didMoveToView 方法中自行触发一次。
func controlMethod() {
waitdur -= 1
runAction(SKAction.repeatActionForever( SKAction.sequence([
SKAction.runBlock(generateDots),
SKAction.waitForDuration(waitdur),
SKAction.runBlock(controlMethod)
])))
}
祝你好运!
很抱歉格式化!我在移动...希望有人可以修复它。
我的屏幕顶部有两个相互平行的点,它们与底部的两个可以通过触摸旋转的圆圈相匹配。我让它们像这样生成:
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
runAction(SKAction.repeatActionForever(
SKAction.sequence([
SKAction.runBlock(generateDots),
SKAction.waitForDuration(1.0)])))
}
func generateDots() {
let count = 2
let index=Int(arc4random_uniform(UInt32(count)))
let dots = SKSpriteNode(imageNamed: "Color\(index+1)")
dots.physicsBody = SKPhysicsBody(circleOfRadius: 10)
dots.physicsBody?.dynamic = true
dots.physicsBody?.affectedByGravity = false
for i in 0..<2 {
dots.physicsBody?.categoryBitMask = UInt32(0x1 << index)
dots.physicsBody?.contactTestBitMask = UInt32(0x1 << index)
}
addChild(dots)
dots.size = CGSizeMake(45, 45)
dots.position = CGPointMake(150, 400)
dots.runAction(
SKAction.moveByX(0, y: -900,
duration: NSTimeInterval(11.5)))
}
}
有没有办法逐渐加快它们下降的速度或逐渐改变 waitForDuration
以便随着时间的推移每 3 秒、然后 2 秒、然后 1 秒和等等?
这完全可行!您只需要添加一些变量。
如果你想改变它们下落的速度,那么你需要创建一个像
这样的变量Var droptime:NSTimeInterval = 11.5
然后在您的 "dropdot()" 方法中您需要做两件事。
开始时减去或除掉你的 droptime 变量,比如...
掉落时间 -= 1
然后在最后生成下落动作时make it
持续时间:掉落时间
而不是以前的样子。
如果你想让生成时间更短,那么你需要创建一个函数,你可以在每次你想要让场景运行的动作(就像你在 viewdidload 中所做的那样)时触发并编辑它它有可变等待并触发自身。此外,您还需要在 didMoveToView 方法中自行触发一次。
func controlMethod() {
waitdur -= 1
runAction(SKAction.repeatActionForever( SKAction.sequence([
SKAction.runBlock(generateDots),
SKAction.waitForDuration(waitdur),
SKAction.runBlock(controlMethod)
])))
}
祝你好运!
很抱歉格式化!我在移动...希望有人可以修复它。