2016-05-17 34 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") 
} 
相關問題