2013-04-18 98 views
2
-(void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event 
    { 
     CGPoint location = [touch locationInView:[touch view]]; 
     location = [[CCDirector sharedDirector] convertToGL:location]; 

     shootVector = ccpSub(location, cannon.position); 
     CGFloat shootAngle = ccpToAngle(shootVector); 
     cocosAngle = CC_RADIANS_TO_DEGREES(-1 * shootAngle); 

     CGFloat rotateDiff = cocosAngle;  
     if (rotateDiff > 180) 
      rotateDiff -= 360; 
     if (rotateDiff < -180) 
      rotateDiff += 360;  

     CGFloat rotateSpeed = 360; 
     rotateDuration = fabs(rotateDiff/rotateSpeed); 

     [cannon runAction:[CCSequence actions: 
          [CCRotateTo actionWithDuration:rotateDuration angle:cocosAngle], 
          [CCCallFunc actionWithTarget:nil selector:nil], 
          nil]]; 

     top.rotation = cannon.rotation; 
    } 

上方觸摸代碼原因旋轉360度的移動,相反,我想我的旋轉大炮在180次以下..如何旋轉180度cocos2d-iphone的精靈?

任何幫助,將不勝感激。

+0

最多可創建和Minmum degres,並與他們比較,如果rotateDiff> MaxDegree然後設置爲MAX如果rotateDiff

回答

2

使用CCRotateBy命令代替CCRotateTo將導致一定量的而不是去到一定位置的旋轉。以同樣的方式你會CCRotateTo叫它如下:

[CCRotateBy actionWithDuration:rotateDuration angle:180] 
+0

不適用於我.. 它旋轉180度甚至我觸摸一次,我不想要,而是我想限制我的旋轉到180度時,手指持續接觸CANNON。 您能否創建演示並檢查一次? –

+0

http://www.cocos2d-iphone.org/forum/topic/10836節省了我的時間。 –