0

我是 Farseer 库的新手,我正在尝试使用 Farseer 制作 C# 表单应用程序。我创建了一个表单,在表单上放置了一个地板,然后我将一个矩形从表单顶部拖放到底部。块似乎下落,但它不会随着重力加速。我确信这是我没有设置的东西,但对于我的生活,我无法弄清楚,并希望有人能指出我正确的方向。

在此先感谢您的帮助,

杰夫

===============================重要代码================== ================

 World world = new World(new Vector2(0.0f, 0.1f));

//Floor
Body floor = BodyFactory.CreateRectangle(world, 10000.0f, 30.0f, 100, new Vector2(0.0f, Height));
floor.BodyType = BodyType.Static;

// Block
 Body Block1 = BodyFactory.CreateRectangle(world, 100.0f, 10.0f, 100, new Vector2(Width/2, 0));
 Block1.BodyType = BodyType.Dynamic;

//(The step here is called when I timer goes off every .01/second)
 //Step the world a 10th of a second.
 world.Step((float).01f);



//(I draw the object this way)

 gr.TranslateTransform(body.Position.X, body.Position.Y);
 gr.RotateTransform((float)((body.Rotation *360)/(2*Math.PI)));
 gr.FillRectangle(SystemBrushes.ButtonFace, -size.Width / 2.0f, -size.Height / 2.0f, size.Width, size.Height);  
 gr.ResetTransform();
4

1 回答 1

0

想通了!问题是我使用的是像素而不是米,一旦我发现你现在可以看到重力对下落的方块产生影响。对不起,噪音。

用于常见问题解答:

Box2D 使用什么单位?¶

Box2D 针对米-千克-秒 (MKS) 进行了调整。您的移动物体应在 0.1 - 10 米之间。不要以像素为单位!你会得到一个抖动的模拟。

如何将像素转换为米?

假设您有一个 100x100 像素的角色精灵。您决定使用 0.01 的比例因子。这将使角色物理框为 1m x 1m。所以去做一个1x1的物理盒子。现在假设字符从像素坐标 (345,679) 开始。所以将物理框定位在 (3.45,6.79)。现在模拟物理世界。假设角色物理框移动到 (2.31,4.98),那么将角色精灵移动到像素坐标 (231,498)。现在唯一棘手的部分是选择比例因子。这真的取决于你的游戏。你应该尽量让你的移动物体在 0.1 - 10 米的范围内,1 米是最佳位置。

于 2011-04-04T19:07:40.567 回答