2010-11-22 6 views
1

Grundsätzlich versuche ich Impuls auf einen runden Körper in einem bestimmten Winkel anzuwenden. Aber der Körper bewegt sich in einer unberechenbaren Richtung. Kann mir bitte jemand helfen.Körper sprunghafte Bewegung, wenn Impuls angewendet wird (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); 

Antwort

0

Sie b2Body::GetWorldCenter für den zweiten Parameter von b2Body::ApplyLinearImpulse verwenden sollen:

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

Nach einem post at Box2D forum, der Grund, warum GetPosition nicht mit Kraft arbeitet, ist, dass die Kraftwerke mit dem Zentrum des Körpers Masse, die nicht immer die gleiche wie seine Position ist.

Verwandte Themen