我是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 :(得分: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米是最佳位置。