ApplyLinearImpulse не работает при вызове из функции UIPanGestureRecognizer - PullRequest
0 голосов
/ 23 июля 2011

Я использую Box2d и Cocos2d для разработки игры для iPhone.У меня есть шарик в центре экрана с простой границей, созданной с помощью приборов и т. Д. Я хочу добавить функциональность, чтобы пользователь мог «сильно ударить» по мячу, чтобы применить силу, и в основном пролистать его по экрану.

Я использую следующий код для достижения этой цели:

b2Vec2 force = b2Vec2(30, 30);
_body->ApplyLinearImpulse(force, _ballBodyDef->position);

Если я применяю линейный импульс во время функции инициализации, шар запускается в правильном направлении и ведет себя так, как должен.Однако он ничего не делает, если я помещаю это в функцию handlePan, которая вызывается, когда пользователь делает жест.Вот полный код функции: (Обратите внимание, что NSLog записывает правильную информацию.

- (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {
    if (recognizer.state == UIGestureRecognizerStateEnded) {
            CGPoint velocity = [recognizer velocityInView:recognizer.view];

            NSLog(@"Vel: %f, newPos: %f",velocity.x,velocity.y);

            b2Vec2 force = b2Vec2(30, 30);
            _body->ApplyLinearImpulse(force, _ballBodyDef->position);
    }      
}

1 Ответ

1 голос
/ 24 июля 2011

Сила, которую вы применяете в handlePanFrom, всегда равна b2Vec2 (30, 30).Он никогда не изменится с вашим текущим кодом и поэтому не будет двигаться в вашем направлении.

...