2011-04-04 72 views
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(); 

回答

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