2015-04-06 77 views
0

我想知道如何使用swift更改sprite套件中下降节点的速度,我尝试了通过改变重力,但是当它变得非常快时,它开始崩溃。 我已经这样做了,它的工作原理,但正如我所说崩溃:如何更改SWIFT中下降节点的速度

var velocity:CGFloat = 0 
override func update(currentTime: CFTimeInterval) { 
velocity = CGFloat(score*3) 
self.physicsWorld.gravity = CGVectorMake(0, -velocity) 
} 

谢谢!

+0

你是什么开始的意思坠毁?为什么不把速度分配给坠落的身体呢? – giorashc 2015-04-06 10:32:01

+0

@giorashc它开始震动并消失并出现。我怎样才能将速度分配给坠落的身体? – 2015-04-06 10:39:38

回答

1

除了改变场景的重力外,还可以在节点上施加一个力。

禁用重力

self.physicsWorld.gravity = CGVectorMake(0,0) 

设置每个下降节点的name属性与它的声明

node.name = @"fallingNode" 

然后,在更新功能

self.enumerateChildNodesWithName("fallingNode", usingBlock: { 

    (node: SKNode!, stop: UnsafeMutablePointer <ObjCBool>) -> Void in 
     // do something with node or stop 
     node.physicsBody?.applyForce(velocity) 
     return 
    }) 
+0

它给了我这个错误:不能用类型'(StringLiteralConvertible,usingBlock:(SKNode !, UnsafeMutablePointer ) - > Void)'的参数列表调用'applyForce'' – 2015-04-06 13:03:25

+0

根据http://stackoverflow.com/a/26022360/2043580你需要在关闭结束时添加返回。请检查编辑。 – ZeMoon 2015-04-06 13:13:11

+0

是的,它的工作原理。谢谢 – 2015-04-06 17:50:29