私は動いているプラットフォーム(キネマティックボディ)を持っています。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:まあ、私は第1の視覚的に目立つジッタ:(はい、私も驚いています。重力ベクトルの値を低く設定して、プラットフォームの運動体ですか? – legends2k
はい、通常重力のキネマティックです。あなたのオブジェクトは本当に小さいですか?私たちにPTMを伝えることは、いくつかの実際のサイズがなければ助けになりません:) – iforce2d