2011-06-09 61 views
1

即時通訊使用與box2d cocos2d。
目前我試圖優化一個系統,我已經安裝,使某些對象有0重力。
在我的tick方法中,如果object屬性object.isGravitated = NO,將會調用一個反重力方法來使用object.body-> applyForce(b2Vec2(0,10));以抵消向下的力量。但就fps而言,這似乎代價很高。
有多個(5 - 10)isGravitated = NO對象導致fps下降約10fps左右。Box2d反重力問題

這對您來說看起來是否合適,以及對改善此係統有何建議?
謝謝

回答

1

您可以直接修改b2body,因爲它包含重力因子。默認情況下,將其設置爲1.0f,這意味着正常的重力。將其設置爲0.0f以避免重力。

重力利用b2Island計算,所以在b2Island.cpp查找線(它在解決方法):

b->m_linearVelocity += step.dt * (gravity + b->m_invMass * b->m_force); 

修改它來乘以重力因子的嚴重性。

這應該是快速,高效,而不是很多工作。

您必須在C或C++中完成,而不是在Objective-C中完成,因爲它是一個C++對象。

+0

天才,好想法謝謝你。我會給它一個旋轉這arvocardo :) – Ospho 2011-06-16 00:10:08