2014-03-03 69 views

回答

0

我不喜歡使用動作,我將所有事情都作爲遊戲內部時間的一個功能,它使所有內容保持一致,對於更復雜的遊戲來說,它至關重要。

這是從一個基於空間的遊戲中我做的,行星會圍繞一個點旋轉。

說明:

  • 方向:1或-1(順時針或逆時針)
  • _model.orbitSpeed:圍繞中心點
  • _model.initialAngleInRadians的移動速度:起始點的軌道(因爲它是時間的函數)
  • _model.orbitDistance:物體移動距離中心有多遠
  • time:一個表示時間的整數(在我的大部分遊戲中這相當於幀,因爲我總是使用固定的時間步長模型)

    self.position = CGPointMake(cos(direction *(((float)time * _model.orbitSpeed)+ _ model.initialAngleRadians))* _ model.orbitDistance,sin(direction *(((float)time * _model.orbitSpeed)+ _ model.initialAngleRadians))* _ model.orbitDistance);

很明顯,您將需要更新所有移動的對象與當前時間爲有史以來的幀,我這樣做的更新方法。這非常簡單。你可以將它歸結爲:self.position = CGPointMake(cos((float)time)* distanceFromCenter,sin((float)time)* distanceFromCenter);

+1

通過將旋轉的節點添加到另一個節點並更改父節點的zRotation,可以輕鬆完成此操作。 – LearnCocos2D

+0

是的,但是你鬆散地控制了孩子本身的zRotation,然後繼續旋轉。或者你需要把它作爲反轉來破解。 我更喜歡通過純數學來代替使用兒童輪換的代碼。在大型項目中,我個人喜歡簡單的代碼。但這是一個品味問題。 –