Я использую 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);
}
}