Хаотичное движение тела при подаче импульса (Cocos2d-Box2d)

В основном я пытаюсь применить импульс к круглому телу под определенным углом. Но тело движется в хаотичном направлении. Может кто-нибудь мне помочь.

b2Vec2 v1 = bombbody->GetPosition();
b2Vec2 v2 = arrowPoint;//Value got from touch
b2Vec2 final = v2-v1;
float angle1 = CC_RADIANS_TO_DEGREES(atan2(final.y,final.x));
float factor = sqrt(final.x/PTM_RATIO * final.x/PTM_RATIO + final.y/PTM_RATIO * final.y/PTM_RATIO);
b2Vec2 ImpulseVector = b2Vec2(cos(angle1)*factor,sin(angle1)*factor);
b2Vec2 PointVector = bombbody->GetPosition();
bombbody->ApplyLinearImpulse(ImpulseVector,PointVector); 

person Community    schedule 22.11.2010    source источник


Ответы (1)


Вы должны использовать b2Body::GetWorldCenter для второго параметра b2Body::ApplyLinearImpulse:

  b2Vec2 PointVector = bombbody->GetWorldCenter();
  bombbody->ApplyLinearImpulse(ImpulseVector,PointVector); 

Согласно сообщению на форуме Box2D, причина, по которой GetPosition не Работа с силой заключается в том, что сила действует с центром масс тела, который не всегда может совпадать с его положением.

person Lukman    schedule 02.08.2011