2012-02-28 4 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 в текущий угол: этот метод называется каждым движением, а угол вычисляется с самого начала жестов. следить на фактический угле тока (без угла anctive жеста в), будет довольно сложная задача, я думаю

ответ

1

Я нашел решение: Я проверил состояние жеста (есть Начальное состояние):

- (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)); 

} 
Смежные вопросы