Gravity的加速度加速有帮助吗?

时间:2011-04-04 17:00:04

标签: c# forms farseer

我是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();

1 个答案:

答案 0 :(得分:0)

想出来了!问题是我使用Pixel而不是米,一旦我发现你现在可以看到重力对下降块产生影响。对不起噪音。

采取常见问题解答:

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米是最佳位置。