2016-05-17 8 views
1

私はこのノードを持っています。ボタンを押したままにすると、ノードの回転が遅くなります。 durationパラメータを1から50に変更しましたが、ノードは同じ速度で回転します。私は間違って何をしていますか?ノードをより遅く回転させるにはどうすればよいですか?

let rotateRate = (SKAction.rotateByAngle(CGFloat(-M_PI_2), duration: 50.0)) 
let repeatRotate = SKAction.repeatActionForever(rotateRate) 
heroNode.runAction(repeatRotate) 

答えて

3

アクションを作成したら、その期間のパラメータを変更することはできません...だから、あなたが期待しているように、アクションの速度に影響を与えることができません。

if let action = node.actionForKey("aKey"){ 

    action.speed = 1.5 
} 

  • ために行動を

  • は、そのアクションのスピードを変更するには(あなたはおそらく、このためのキーでアクションを実行する)を再作成します。しかし、あなたはいくつかのオプションを持っています

おそらくもう少しですが、これによって何が起こっているのかがわかります。

2

まず、Whirlwindのオプションを使用することをお勧めします。これは99%の時間を使用する必要がありますが、速度を変更することができない場合は、rotateByの別のアクションを小さな間隔で逆方向に適用してください。

let rotateRate = (SKAction.rotateByAngle(CGFloat(-M_PI_2), duration: 50.0)) 
let repeatRotate = SKAction.repeatActionForever(rotateRate) 
heroNode.runAction(repeatRotate) 


... 
func slowDown() 
{ 
    let rotateRate = (SKAction.rotateByAngle(CGFloat(M_PI_4), duration: 50.0)) 
    let repeatRotate = SKAction.repeatActionForever(rotateRate) 
    heroNode.runAction(repeatRotate, forKey:"slowdown") 

} 

func removeSlowDown() 
{ 
    heroNode.removeActionForKey("slowdown") 
} 
関連する問題