2014-04-12 1 views
0

여기에 타입 변환 문제가 있으며 전체 시간 동안 머리를 부러 뜨 렸습니다. 문제는 ApplyForce 함수에 있습니다. 우리는 b2Vec2 (중력)에 float (질량)을 곱할 수 없습니다. 나는 예를 따랐다 here 누군가 나를 도울 수 있습니까? 형 b2Body *의 CannonBallBody으로Box2D 타입 변환 : ApplyForce() 반 중력

-(void) antiGravity 
{ 
float32 total_mass = [cannonBallBody getMass]; 
b2Vec2 point0 = [cannonBallBody getWorldCenter: cannonBallBody]; 
cannonBallBody -> ApplyForce(-1 * world -> GetGravity() * total_mass, cannonBallBody -> GetWorldCenter()); 
} 

- (float) getMass{ 
float total_mass = 0; 
for(int i=0; i<8; i++){ 
      total_mass+= body1[i]-> GetMass(); 
    } 
return total_mass; 
} 

- (b2Vec2) getWorldCenter: (b2Body*)body{ 
    return body->GetWorldCenter(); 
} 

감사합니다!

답변

0

어떤 오류가 발생했는지 말하지 않았기 때문에 나는이 질문을 이해하지 못합니다.

하지만 나는 벡터 앞에 float을 넣어야한다고 생각합니다. 그 이유는 Box2D가이 연산자를 정의하지만 그 반대가 아닙니다 :

inline b2Vec2 operator * (float32 s, const b2Vec2& a) 
{ 
    return b2Vec2(s * a.x, s * a.y); 
}