2011-01-08 95 views
7

正在製作一個精靈來發射物體。柱塞的背面連接着柱塞。柱塞對設定速度和角度起作用。佳能旋轉0-90度,柱塞前後移動調節速度。當我旋轉佳能觸摸移動其工作正常。 當柱塞通過觸動而被拉回並且它旋轉意味着柱塞被限制在佳能的外部。在cocos2d中界定一個精靈

如何控制這一點: -

我的推杆和觸摸佳能輪換代碼移動。 (para3各個是佳能,para6是我的柱塞): -

CGPoint touchLocation = [self convertTouchToNodeSpace:touch]; 
    CGPoint oldTouchLocation = [touch previousLocationInView:touch.view]; 
    oldTouchLocation = [[CCDirector sharedDirector] convertToGL:oldTouchLocation]; 
    oldTouchLocation = [self convertToNodeSpace:oldTouchLocation]; 
    if (CGRectContainsPoint(CGRectMake(para6.position.x-para6.contentSize.width/2, para6.position.y-para6.contentSize.height/2, para6.contentSize.width, para6.contentSize.height), touchLocation) && (touchLocation.y-oldTouchLocation.y == 0)) 
    { 
     CGPoint diff = ccpSub(touchLocation, oldTouchLocation); 
     CGPoint currentpos = [para6 position]; 
     NSLog(@"%d",currentpos); 
     CGPoint destination = ccpAdd(currentpos, diff); 
     if (destination.x < 90 && destination.x >70) 
     { 
      [para6 setPosition:destination]; 
      speed = (70 + (90-destination.x))*3.5 ; 
     } 

    } 
if(CGRectIntersectsRect((CGRectMake(para6.position.x-para6.contentSize.width/8, (para6.position.y+30)-para6.contentSize.height/10, para6.contentSize.width, para6.contentSize.height/10)),(CGRectMake(para3.position.x-para3.contentSize.width/2, para3.position.y-para3.contentSize.height/2, para3.contentSize.width, para3.contentSize.height)))) 

      { 

     [para3 runAction:[CCSequence actions: 
          [CCRotateTo actionWithDuration:rotateDuration angle:rotateDiff], 
          nil]]; 
     CGFloat plungrot = (rotateDiff); 
     CCRotateTo *rot = [CCRotateTo actionWithDuration:rotateDuration angle:plungrot]; 
     [para6 runAction:rot]; 
    } 
} 

回答

2

怎麼ü做到這一點,你使用[CCMoveTo actionWithDuration:位置:]方法?

通過此方法,您可以通過「actionWithDuration」參數輕鬆控制速度,該參數以秒爲單位取整數值的時間,而方向可以通過以ccp(x,y)爲值的「position」參數進行調整你希望你的柱塞移動到的點。

您可以使用它像這樣....

CCSprite *plunger = [[CCSprite alloc] initWithFile:@"plunger.png"]; 
    plunger.position = ccp(240,240); 
    [self addChild:plunger z:10]; 
    [plunger release]; 

    id = [CCMoveTo actionWithDuration:3 position:ccp(300,240)]; 

給出的值是我的首選。你可以使用它們來符合你的要求。

希望它可以幫助你......

1

我希望我理解正確的問題: 如果問題是,大炮和活塞都圍繞自己的中心點旋轉,但你要他們一起轉動,那麼解決方案應該是使柱塞大炮的孩子精靈(這也使得相對於大炮plugers位置),即

[para3 addChild:para6] 

那麼你只需要旋轉的大炮和柱塞將隨之旋轉。

,如果我得到你的問題完全錯誤的,也許你可以張貼截圖:-)

+0

我作爲一個孩子添加。仍然它的邊界精靈(柱塞邊界的大炮)當觸摸結束的方法,它會正常工作。在添加子元素後仍然會移動。 – Srinivas 2011-01-12 13:18:57