簡體   English   中英

在cocos2d中更平滑的精靈旋轉?

[英]Smoother sprite rotation in cocos2d?

我有一個簡單的程序,當您按住屏幕時,精靈會向上移動,而當您放開時,精靈會向下移動。 因此,在ccTouchesBegan函數中,我旋轉了精靈:

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    player.rotation = -5;
}

然后在ccTouchesEnded函數中再次旋轉它:

-(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

    player.rotation = 20;
}

所以我想知道是否有一種方法可以使旋轉更慢一些,更平滑些? 當我運行它時,它看起來很笨拙,我希望它看起來更逼真。 我沒有使用物理引擎(box2d,花栗鼠等)。

  • 您可以使用CCRotateBy或CCRotateTo類函數來旋轉它。 例如 player-> runAction(CCRotateTo :: create(1.0f,-5)); //在C ++中

    在這里,第一個參數指定旋轉的持續時間(當前為1秒),第二個參數為角度。

    但是,如果您過於頻繁地觸摸屏幕,那么這也可能看起來很奇怪。

以下代碼適用於cocos2d-IOS。 但是您也可以將其翻譯為c ++。 這很容易。

    CCRotateBy *rotTouchBegin = [CCRotateBy actionWithDuration:1.0f angle:-5];
    CCRotateBy *rotTouchEnd = [CCRotateBy actionWithDuration:1.0f angle:20];

    -(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
      {
         [player stopAllActions];             
         [player rotTouchBegin];
      }

    -(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
         [player stopAllActions];
         [player rotTouchEnd];

}

如果您不想停止所有在播放器上運行的動作,則只需標記您的動作即可使用[player stopAction:[player getActionByTag:]];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM