我有一個移動平臺(運動型車身),它從最初的位置上升。如何防止在Box2D中移動運動平臺和動態物體之間的抖動?
b2BodyDef platformDef;
platformDef.type = b2_kinematicBody;
platformDef.linearVelocity = b2Vec2(0.f, 0.5f);
現在我已經一球(動態體)的播放器控件,它可以在上述平臺上的乘坐上去,從它的位置。這裏的球的數據:
b2BodyDef ballDef;
ballDef.type = b2_dynamicBody;
ballDef.fixedRotation = true;
b2Body *ball = b2dWorld.CreateBody(&ballDef);
b2FixtureDef fixDef;
fixDef.shape = &shapeCircle; // a simple b2CircleShape with radius 0.6m
fixDef.density = 1.f;
fixDef.friction = 0.2f;
fixDef.restitution = 0.3f;
ball->CreateFixture(&fixDef);
現在球正確地移動移動平臺之上,而有球的身體的整個行程,即它不斷地與上它的移動平臺碰撞的輕微抖動。我試圖將球的賠償率設置爲0,但無濟於事。
如果需要詳細信息,則系統的像素與儀表比率爲0.02。
你是在談論一個明顯可見的抖動,或者說你會得到很多BeginContact/EndContact回調?如果是後者,那麼對此可能沒有什麼可以做的。如果您需要知道球在平臺上的時間,您可能需要將另一個稍微大一點的夾具放在球體上作爲傳感器,以檢測它是否在平臺上。如果你在談論明顯的抖動,我會有點驚訝。我做了基本相同的事情,但沒有發現抖動(請參閱最右邊的平臺頂部的球:http://www.youtube.com/watch?v = vXovY2KTing) – iforce2d
@ iforce2d:好的,我正在考慮第一即明顯明顯的抖動:(是的,我也很驚訝,你是否爲重力矢量設置了一個較低的值,並且該平臺是一個運動體? – legends2k
是的,具有正常重力的運動學。請按照說明中的鏈接進行操作。您的物品是否真的很小?告訴我們,如果沒有一些實際尺寸,PTM也無濟於事:) – iforce2d