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