1

Physics World でリジッド (ソリッド/バウンスなし) ボディを作成する方法、以下のコードで同じことを試みています

Body bodyBall = BodyFactory.CreateBody(world);
CircleShape circleShape = new CircleShape(ConvertUnits.ToSimUnits(textureWidth / 2f), .1f);
Fixture fixtureBall = bodyBall.CreateFixture(circleShape);
bodyBall.BodyType = BodyType.Dynamic;
bodyBall.Restitution = 0f;

反発0に設定しても、他の(同じ)ボディと衝突すると跳ね返ります。

4

1 に答える 1

2

衝突時の回復は、両方のフィクスチャのRestitutionプロパティの値の関数です。

この関数は、Farseerのコードを変更することで、特にSettings.csFarseerPhysics.Settings.MixRestitutionのメソッドを変更することでカスタマイズできます。これがデフォルトの実装で、2つの復元値の最大値を返します。

public static float MixRestitution(float restitution1, float restitution2)
{
    return restitution1 > restitution2 ? restitution1 : restitution2;
}

したがって、このメソッドを変更できます(代わりに最小値を返す可能性があります)。Restitutionまたは、関連するすべてのフィクスチャの値をゼロに設定することもできます。

于 2013-03-21T07:06:16.483 に答える