2012-02-28 87 views
1

我有一个姿态recignizer,我需要旋转体:Box2D的身体旋转

- (void) rotate:(UIGestureRecognizer*)recognizer node:(CCNode*)node 
{ 
    b2Body *body = (b2Body*)[node.parent userData]; 
    UIRotationGestureRecognizer* rotate = (UIRotationGestureRecognizer*)recognizer; 
    b2Vec2 pos = body->GetPosition(); 
    body->SetTransform(pos, (- rotate.rotation)); 

} 

offcorse,当我开始旋转时,它从零角度开始。 * 但是如何从当前角度继续旋转? *我不能只添加rotate.rotation tu当前角度:这种方法每一次都会调用,角度是从开始时的手势开始计算的。跟踪实际的当前角度(不anctive手势的角度),将是一个非常艰巨的任务,我认为

回答

1

我找到了解决办法: 我检查的手势的状态(有一个begining状态):

- (void) rotate:(UIGestureRecognizer*)recognizer node:(CCNode*)node 
{ 
    b2Body *body = (b2Body*)[node.parent userData]; 
    UIRotationGestureRecognizer* rotate = (UIRotationGestureRecognizer*)recognizer; 
    if (rotate.state == UIGestureRecognizerStateBegan) 
    { 
     baseAngle = body->GetAngle(); 
    } 
    b2Vec2 pos = body->GetPosition(); 
    body->SetTransform(pos, (baseAngle - rotate.rotation)); 

}