我是線程100%新手,作爲一個開始,我已決定使用它來更新單獨線程中的物理。我使用的是被稱爲先知第三方物理引擎,這裏是我在做什麼:在單獨的線程中更新物理引擎,這是明智的嗎?
// class level declarations
System.Threading.Thread thread;
Stopwatch threadUpdate = new Stopwatch();
//In the constructor:
PhysicsEngine()
{
(...)
thread = new System.Threading.Thread(
new System.Threading.ThreadStart(PhysicsThread));
threadUpdate.Start();
thread.Start();
}
public void PhysicsThread()
{
int milliseconds = TimeSpan.FromTicks(111111).Milliseconds;
while(true)
{
if (threadUpdate.Elapsed.Milliseconds > milliseconds)
{
world.Step(threadUpdate.Elapsed.Milliseconds/1000.0f);
threadUpdate.Stop();
threadUpdate.Reset();
threadUpdate.Start();
}
}
}
這是一個不錯的方法來更新物理或應該有一些東西,我應該注意的事項?
是的,我的大部分問題基本上都是由我的遊戲邏輯調用物理操作(如raycast)或我的物理引擎將碰撞回調發送到引擎的其餘部分引起的。然而,我不想實現一個只適用於特定類型遊戲的解決方案,因爲我試圖構建一個可以處理各種遊戲的遊戲引擎。問題是爲物理問題創建解決方案要求我重新編寫引擎的一部分,使其變得不那麼清晰和直接。我認爲清晰是爲了表現而作出的犧牲。 – tweetypi 2011-05-24 22:56:33