2011-05-03 53 views
1

我想寫一個簡單的遊戲,但我堅持我認爲簡單的物理。我有一個對象,在0,0,0點,以每秒1個單位行進。如果我給出指令,對象必須每秒旋轉15度,持續6秒(所以它最終向右旋轉90度),並以每秒1單位加速4秒(所以最終速度爲5秒單位每秒),我該如何計算它的終點?如何計算旋轉和加速的對象的位置?

我想我知道如何回答這個問題,因爲它不是一個加速的對象,因爲它只是一個圓圈。在上面的例子中,我知道圓的圓周是4 *距離(因爲它正在遍歷圓的1/4),並且我可以計算半徑和角度,並使用簡單的三角來解答。

但是,因爲在任何特定時刻,物體的行進速度都比前一時刻要快,因此我的最終結果不會是圓形,而是某種弧線。我想我可以通過遍歷每一步(例如每秒60步)來估計終點,但這聽起來很容易出錯並且效率低下。

有人能指出我正確的方向嗎?

+0

增量計算運動是遊戲通常做的事情,通常錯誤不是問題。你的遊戲是否有一些會讓它成爲問題的行爲? (例如,如果一個對象永遠在一個圓圈中旋轉,並且它的位置會逐步更新,則錯誤可能會複合,直到它明顯偏離軌跡。) – 2011-05-03 08:48:22

+0

我的想法是,如果我的客戶可以預測我應該在哪裏在將來,我可以發送我的出發點和最後一點,然後計算滯後時間並幫助其他客戶作爲客戶預測的一種形式。另外,我只需要發送一條(稍大一些)的消息,並且對於人們的位置和應該的位置仍然有一定程度的準確性。 – Bailey 2011-05-03 09:01:38

+0

準確地說,轉動時,即使**速度的大小保持不變,物體也會加速**。也就是說,如果你的物體保持1單位/秒的速度,它仍然會加速(雖然橫向),以便轉彎。 – ysap 2011-05-05 22:34:20

回答

1

你踏入的概念正是你所做的。

幾乎所有的遊戲都在所謂的「遊戲勾號」下操作。實際上有許多不同的蜱可以繼續。

「遊戲時間戳」 - 每個遊戲時間點,一組請求被觸發,AI被重新評估,整體遊戲狀態發生變化。

「物理刻度」 - 每個物理刻度,每個物理對象都受到基於其當前物理狀態的狀態更改。

「圖形打勾」 - 也稱爲渲染循環,這只是將遊戲狀態繪製到屏幕上。

遊戲刻度和物理刻度經常,但不需要,彼此重合。你可以有一個物理滴答物,以當前的速度沿着它們當前的運動矢量移動物體,並在必要的時候施加重力(改變速度),同時在完全獨立的循環中增加額外的加速度(也許通過火箭助推器?)。通過適當的多線程護理,它可以很好地融合在一起。無論如何,它們越是分離,越容易將它們與更好的實現交換出去。

通過時間步模擬幾乎所有的物理現象都是在實時遊戲中完成的。我甚至曾經爲國防部做熱模擬,這也是我們如何在那裏做我們的物理建模(我們只需要使用更大的計算機:-))

此外,這可以讓你在你的系統中實現複雜的旋轉物理引擎。 你在物理引擎中的特殊情況越少,事情就會越少。

+0

真的嗎?我花了很多時間去尋找一個美麗優雅的答案; p我應該直接寫下我的狡猾解決方案:)哦,你活着學習。 我會給你投票,但顯然我需要15點聲望才能這樣做。 – Bailey 2011-05-03 08:57:41

+0

我應該指出......這根本不是一個狡猾的解決方案:)或者至少,業內其他人並不這麼認爲。 – corsiKa 2011-05-03 16:58:25

+0

對,對不起。我只是覺得這是狡猾的,因爲這是第一個也是最容易想到的事情。通常,至少在物理學方面,我通常不會首先提出正確的答案。 再次感謝:) – Bailey 2011-05-04 03:33:12

0

你問的實際上是一個數學變化率的問題。運動中的每個對象的位置都是(x,y,z)。如果你能夠將組分速度和加速度分解到它們各自的平面上,那麼你的最終終點將是(x1,y1,z1),這是你的方程在該平面中的各自結果。

希望它有幫助(:

+0

閱讀,謝謝:) – Bailey 2011-05-03 08:58:19