游戏中的物理与数学(一):物体运动算法的实现
(看了《游戲開發(fā)的數(shù)學(xué)與物理》,感覺很不錯,記下點東西。 這是本“圖靈程序叢書”,對于這個系列的書,我一直是蠻喜歡的,感覺書的內(nèi)容、排版等,都讓人看著很舒服。)
1.1讓物體沿水平方向運動
了解勻速直線運動(最簡單的運動),若左邊為x,速度為v,則:x+=v,v=-v。
注意: 注意物體的中心點,不同的游戲引擎,可能設(shè)計的中心點不同,而中心點不同,邊界也就不同。
1.2通過鍵盤控制物體的運動
主要用到小學(xué)學(xué)的勾股定理,原理很簡單,而且很實用。
PS: 在模擬運動時,要控制個方向的速度。
1.3讓物體沿任意方向運動
?
注1:請將角的單位統(tǒng)一為弧度(主要關(guān)系到微積分的一些問題)。
注2:在計算浮點數(shù)中,計算機(jī)不可避免的會有誤差,絕對值越大誤差也就越大。因此應(yīng)該盡可能地使用絕對值小的數(shù)字進(jìn)行計算。
1.4在物體運動中加入重力
?
用此方法算的Vy與y分別是:
?
計算機(jī)所使用的重力加速度單位是特殊的 dot/F^2 (像素/平方幀)
但是對于真實的情況,我們用積分模擬
?
這樣就和前面代碼所表示的存在一些誤差,則代碼應(yīng)該改成:
?
1.5物體隨機(jī)飛濺運動
隨機(jī)數(shù)、均勻隨機(jī)數(shù)、正態(tài)分布 ——>火山噴發(fā)、煙花、摩擦迸出的火花。
產(chǎn)生隨機(jī)速度的部分:
?
生成了均勻隨機(jī)數(shù)(所有數(shù)字的出現(xiàn)概率都相等的隨機(jī)數(shù)),其中,Screen_width 和 screen_height 分辨是屏幕的寬和高。而vx與vy生成的初始值的范圍分別為(-Screen_width/2.0 ~ Screen_width/2.0) 和 (-Base - Screen_height/2.0f ~ -Base+Screen_height/2.0)。
1.6讓物體進(jìn)行圓周角運動
?
所以物體施加一個指向某一點的角速度為ω的力,賣手機(jī)靚號平臺物體就會圍繞該點做圓周運動。
把t=0代入上面兩式得初始時間與速度:
1.7[難]微分方程式及其數(shù)值解法
常用:微分方程的數(shù)學(xué)值解法;??歐拉法
?
但是球類等運動,需要更高精度,則有以下幾種方法
使用精度更高的高階近似求解微分方程,eg,Runge-Kutta methods 。(數(shù)學(xué)難)
使用線性多步法(Linear multistep method)計算,即不光使用前一次的值,還使用前兩次或更多次的值進(jìn)行計算, eg,Adams-Bashforth等。
在一幀內(nèi)多次使用歐拉法計算,縮小△t——重復(fù)使用歐拉法,比較常用。
總結(jié)
以上是生活随笔為你收集整理的游戏中的物理与数学(一):物体运动算法的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity超级角色控制器研究(四)——地
- 下一篇: VR游戏开发者如何避免“移动引起眩晕”