2012-07-07 46 views
3

我想,当我触摸屏移动精灵的身体,但它不能发生......我想移动精灵体时触摸点检测

-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event 
{ 
    for(b2Body *b=world->GetBodyList();b;b=b->GetNext()) 
    { 
    CGPoint location=[touch locationInView:[touch view]]; 
     location=[[CCDirector sharedDirector]convertToGL:location]; 
     b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO); 


     if(b->GetUserData()!=NULL) 
     { 
     CCSprite *sprite =(CCSprite *)b->GetUserData(); 

      b->SetTransform(b2Vec2(location.x, location.y), 0); 
      id action = [CCMoveTo actionWithDuration:0.4 position:CGPointMake(b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO)]; 
      [sprite runAction:action]; 
     } 
    } 
} 

请帮我... 感谢

回答

1

请尝试下面的代码,它会为你工作。

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{  
    for(UITouch *touch in touches) { 
     CGPoint location = [touch locationInView: [touch view]]; 

     location = [[CCDirector sharedDirector] convertToGL: location]; 
     for(b2Body *b=world->GetBodyList();b;b=b->GetNext()) 
     { 
      if(b->GetUserData()!=NULL) 
      { 
       CCSprite *sprite =(CCSprite *)b->GetUserData(); 
       b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO); 
       b->SetTransform(b2Vec2(locationWorld.x, locationWorld.y), 0); 
       id action = [CCMoveTo actionWithDuration:0.4 position:CGPointMake(b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO)]; 
       [sprite runAction:action]; 

      } 
     } 

    } 
} 

与身体的精灵移动到触摸结束的位置。

0

self.isTouchEnabled = YES;你的初始化方法