2014-03-25 3 views
0

나는 스프라이트가 위로 움직이고 스프라이트가 아래로 움직이게 할 때 화면을 잡을 때 간단한 프로그램을 가진다. 그래서 ccTouchesBegan 기능에 내가 스프라이트 회전 다음 ccTouchesEnded 기능에서 다음cocos2d에서 부드러운 스프라이트 회전?

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

    player.rotation = -5; 
} 

와 나는 다시 회전 : 회전 조금을 할 수있는 방법이 있다면

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

    player.rotation = 20; 
} 

그래서 궁금 해서요 느리고 부드럽게? 내가 그것을 실행할 때 그것은 매우 clunky 해 보인다. 그리고 나는 그것을 더 현실적으로 보이기를 원한다. 나는

+0

어떤 유형의 객체가'player'입니까? – user3386109

+0

그것은 CCSprite입니다. – ErikOhlin12

답변

0
  • 당신은 그것을 회전 CCRotateBy 또는 CCRotateTo 클래스 기능을 사용할 수 있습니다 (.. Box2D의, 다람쥐 등) 물리 엔진을 사용하고 있지 않다. Ex. 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 :]];