2013-03-12 71 views
0

我有以下代碼:如何反轉Y軸在UIGestureRecogniser的Cocos2D

- (void)panning:(UIPanGestureRecognizer *)recognizer { 

CGPoint position; 
//CGPoint velocity; 
//velocity = [recognizer velocityInView:[CCDirector sharedDirector].view]; 

switch(recognizer.state) { 
    case UIGestureRecognizerStatePossible: 
     break; 

    case UIGestureRecognizerStateBegan: 
    { 
     position = [recognizer locationInView:[CCDirector sharedDirector].view]; 

     for (CCSprite *sprite in movableSprites) { 
      if (CGRectContainsPoint(sprite.boundingBox, position)) { 
       selSprite = sprite; 
       break; 
      } 
     } 
     break; 
    } 
    case UIGestureRecognizerStateChanged: 
    { 
     position = [recognizer locationInView:[CCDirector sharedDirector].view]; 
     CGPoint yInvertedPosition = CGPointMake(position.x, -position.y); 
     [selSprite setPosition:position]; 
     break; 
    } 
    case UIGestureRecognizerStateFailed: 
     break; 

    case UIGestureRecognizerStateEnded: 
     break; 

    case UIGestureRecognizerStateCancelled: 
     break; 
} 

}

當我拖動它移動X軸確定一個精靈,但它倒在Y軸上。

我該如何轉換它?

CGPoint yInvertedPosition = CGPointMake(position.x, -position.y); 

這並不工作

+0

yInvertedPos應該pos.x和window.height-pos.y。 – yershuachu 2013-03-12 19:16:23

回答

0

你只需要轉換你到GL座標位置。

case UIGestureRecognizerStateBegan: 
{ 
    position = [recognizer locationInView:[CCDirector sharedDirector].view]; 
    position = [[CCDirector sharedDirector] convertToGL:position]; 

    for (CCSprite *sprite in movableSprites) { 
     if (CGRectContainsPoint(sprite.boundingBox, position)) { 
      selSprite = sprite; 
      break; 
     } 
    } 
    break; 
} 
case UIGestureRecognizerStateChanged: 
{ 
    position = [recognizer locationInView:[CCDirector sharedDirector].view]; 
    position = [[CCDirector sharedDirector] convertToGL:position]; 
    [selSprite setPosition:position]; 
    break; 
}