2010-11-22 2 views
1

В основном я пытаюсь применить импульс к круглому корпусу под определенным углом. Но тело движется в беспорядочном направлении. Может кто-нибудь, пожалуйста, помогите мне.Неравномерное движение тела при приложенном импульсе (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); 

ответ

0

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

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

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

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