【Farseer Physics】恢复=0时的刚体

本文关键字:0时 恢复 Farseer Physics | 更新日期: 2023-09-27 18:04:54

如何在物理世界中创建刚性(固体/无弹跳)身体,我正在尝试下面的代码

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,但当它与其他(相同)物体碰撞时,它会反弹回来。

【Farseer Physics】恢复=0时的刚体

碰撞的恢复是两个固定装置的Restitution属性值的函数。

该函数可以通过修改Farseer中的代码来定制,特别是通过修改Settings.cs中的FarseerPhysics.Settings.MixRestitution方法。以下是默认实现,它返回两个恢复值中的最大值:

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

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