2010-11-22 6 views
1

Fondamentalement, j'essaie d'appliquer une impulsion à un corps rond dans un angle spécifique. Mais le corps se déplace dans une direction erratique. Quelqu'un peut-il m'aider s'il vous plaît.Mouvement erratique du corps lors de l'application d'une impulsion (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); 

Répondre

0

Vous devez utiliser b2Body::GetWorldCenter pour le deuxième paramètre de b2Body::ApplyLinearImpulse:

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

Selon une post at Box2D forum, la raison pour laquelle GetPosition ne fonctionne pas avec la force est que les travaux de force avec le centre du corps masse, qui pourrait ne pas toujours être la même que sa position.

Questions connexes