1

如何在物理世界中创建刚性(实心/无反弹)体,我正在尝试使用以下代码

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中的方法。这是默认实现,它返回两个恢复值中的最大值:

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

所以你可以修改这个方法(也许改为返回最小值)。或者您可以简单地将Restitution所有相关设备的值设置为零。

于 2013-03-21T07:06:16.483 回答