2014-03-25 218 views
0

我在那里,当你按住屏幕精灵向上移动,当你放手精灵向下移动一个简单的程序。所以在ccTouchesBegan功能我旋转精灵:cocos2d中更平滑的精灵旋转?

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

    player.rotation = -5; 
} 

然后在ccTouchesEnded功能我再次旋转它:

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

    player.rotation = 20; 
} 

所以我想知道如果有一种方法,使转动一点点更慢更平滑?当我运行它时,它看起来非常笨重,我希望它看起来更真实。我没有使用物理引擎(box2d,花栗鼠等)。

+0

什么类型的对象是'player'? – user3386109

+0

这是一个CCSprite – ErikOhlin12

回答

0
  • 您可以使用CCRotateBy或CCRotateTo Class函数来旋转它。例如, player-> runAction(CCRotateTo :: create(1.0f,-5)); //在C++

    这里第一个参数指定持续时间,以旋转(目前1秒)和第二一个为视角。

    但如果你触摸屏幕过于频繁这其中也可能看起来怪怪的。

0

下面的代码是针对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]; 

}

如果你不想停止播放器上的所有正在运行的操作,然后只需标记您的操作,使您可以使用 [玩家stopAction:球员getActionByTag:]];