農林漁牧網

您現在的位置是:首頁 > 林業

3D遊戲程式設計:完善彈球結構,併為場景新增彈球

2022-04-07由 我是遊戲小胡 發表于 林業

pla abs材料是什麼

我們這個示例的主要目的是實現一個封閉房間內很多彈球“彈來彈去”的情形,而要實現這個過程,需要一些物理學上的知識。

彈球主要有3種類型的運動:

①彈球的自由落體;

②彈球與房間邊界的碰撞;

③彈球之間的碰撞。

一、基礎物理知識

想要精確模擬的話,需要用到諸如微積分、空氣阻力、能量損耗等內容,我們只是粗略模擬,用一些中學時代的物理知識就夠了。

那麼,我們需要哪些物理知識呢?

(1)距離公式

在單位時間內,速度乘以用掉的時間就是距離:

S = vt

彈球的運動不是勻速運動,但是,我們可以把它當成勻速運動來處理。為什麼呢?因為我們都是在單幀的時間範圍內處理這些資料的,而單幀過去的時間非常短,在這個短時間內,我們完全可以把球體的速度當成勻速的。實際上,這個過程就是真正意義上的微積分過程。

(2)加速度公式

當有加速度的時候,物體的速度是會變化的,不過公式很簡單:

Δv=at

加速度乘以消耗的時間就是改變的速度。具體到我們的彈球示例中,唯一的加速度就是重力加速度。

3D遊戲程式設計:完善彈球結構,併為場景新增彈球

(3)能量公式

運動的物體是有能量的,能量的大小和物體的質量與速度有關係:

E=1/2mv^2

為了簡化計算,我們把球體的質量設定成1。0,這樣就不需要乘以質量了。但是,1。0的質量對於我們的球體來說有點輕了,所以,我把重力加速度設定成了100。0,這樣球體的下落看起來就比較正常了。

(4)能量衰減

當球體發生碰撞之後,由於有摩擦力的存在,球體的能量就會發生衰減,導致的結果就是速度衰減。我們只是模擬能量的衰減,所以,不需要具體的公式(有摩擦力的公式,但計算起來真的很複雜),我們只要在程式設計時體現出能量的衰減就行。

二、彈球的資料結構

由於牽扯到了比較複雜的計算,所以,只用一個單變數的陣列並不能滿足所有的計算,我們必須為每個彈球建立一個數據結構。