2010-11-22 2 views
1

기본적으로 저는 특정 각도로 둥근 몸체에 충격을가하려고합니다. 하지만 시체가 엉뚱한 방향으로 움직입니다. 아무도 도와주세요. 당신은 b2Body::ApplyLinearImpulse의 두 번째 매개 변수에 대한 b2Body::GetWorldCenter를 사용해야합니다임펄스가 가해지면 몸이 이상하게 움직입니다. (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

하십시오 post at Box2D forum에 따르면

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

GetPosition이 힘으로 작동하지 않는 이유는 그 몸의 센터와 힘의 작품 질량은 항상 그 위치와 같지 않을 수도 있습니다.

관련 문제