2014-04-12 82 views
0

我在這裏有一個類型轉換的問題,我一整天都在爲這個問題煩惱。問題在於ApplyForce函數。我們無法將b2Vec2(重力)與浮子(質量)相乘。我已經按照例子here有人可以幫我嗎?Box2D類型:ApplyForce()反重力

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

隨着類型b2Body *的CannonBallBody和

- (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

我不太明白這個問題,因爲你沒有說出這是什麼錯誤造成的。

但我想你只需要把浮標放在矢量之前。原因是Box2D定義了這個操作符,但不是相反的:

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