ios游戲開發(fā)--Cocos2D-x中的物理引擎_第1頁
ios游戲開發(fā)--Cocos2D-x中的物理引擎_第2頁
ios游戲開發(fā)--Cocos2D-x中的物理引擎_第3頁
ios游戲開發(fā)--Cocos2D-x中的物理引擎_第4頁
ios游戲開發(fā)--Cocos2D-x中的物理引擎_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、游戲開發(fā)Cocos2D-X第10章 Cocos2D-x中的物理引擎2021/8/2移動(dòng)互聯(lián)網(wǎng)創(chuàng)新工場12021/8/2移動(dòng)互聯(lián)網(wǎng)創(chuàng)新工場2游戲中有很多模擬現(xiàn)實(shí)的部分,這些模擬可以使玩家的感覺更真實(shí)。雖然不是對(duì)于所有游戲來說都必須使用物理引擎,但當(dāng)需要大量的模擬碰撞和自由落體運(yùn)動(dòng)時(shí),選擇物理引擎來開發(fā)無疑會(huì)使開發(fā)事半功倍。在智能機(jī)平臺(tái)游戲中,包括憤怒的小鳥等游戲都采用了物理引擎進(jìn)行開發(fā)。Cocos2D-x中支持Box2D和Chipmunk兩種物理引擎。本章就介紹物理引擎的基本概念Cccos2D-x中這兩種物理引擎的使用。物理引擎物理引擎2021/8/2移動(dòng)互聯(lián)網(wǎng)創(chuàng)新工場3在使用物理引擎的游戲中,

2、可以把物理引擎理解為控制整個(gè)游戲中精靈移動(dòng)的邏輯控制餐通過定義不同節(jié)點(diǎn)在物理效果中扮演的角色來控制所有節(jié)點(diǎn)的碰撞和移動(dòng)軌跡。 游戲世界的很多運(yùn)動(dòng)規(guī)律都是模擬現(xiàn)實(shí)的,盡管有些游戲在現(xiàn)實(shí)的基礎(chǔ)上有所創(chuàng)新,但是更多的時(shí)候要給玩家以真實(shí)的感覺,模擬現(xiàn)實(shí)并給予玩家真實(shí)的游戲感覺非常重要。在不使用物理引擎的時(shí)候,可以通過自己的算法來計(jì)算物體的運(yùn)動(dòng)規(guī)律。這種方式不僅降低了開發(fā)效率,而且在運(yùn)行效果上也得到整體的優(yōu)化。于是大家把游戲中模擬物理的計(jì)算算法都提卜總結(jié)出來,形成了物理引擎。物理引擎通過為剛性物體賦予真實(shí)的物理屬性的方式來計(jì)算動(dòng)、旋轉(zhuǎn)和碰撞反映。物理引擎使用對(duì)象屬性(動(dòng)量、扭矩或者彈性)來模擬剛體行為。

3、好的物理引擎允許有復(fù)雜的機(jī)械裝置,像球形關(guān)節(jié)、輪子、氣缸或者鉸鏈。有些也支持非剛性體的物理屬性,比淹體。盡管物理引擎的功能很強(qiáng)大,但是也有其局限性。在模擬現(xiàn)實(shí)世界相關(guān)運(yùn)動(dòng)效果時(shí),如杲完全模擬,會(huì)消耗很大的運(yùn)算量,因此采取一些“捷徑”來模擬現(xiàn)實(shí)的運(yùn)行效果。比如,當(dāng)物體運(yùn)動(dòng)的步長(速度)超過它自己本身的效果時(shí),會(huì)發(fā)生物體互相穿透的效果,所以需要控制物體的移動(dòng)速度來避免這種穿越現(xiàn)象的發(fā)生 什么是物理引擎 物理引擎的物理引擎的作用作用2021/8/2移動(dòng)互聯(lián)網(wǎng)創(chuàng)新工場4真實(shí)的物理世界的模擬。采用牛頓力學(xué)為基礎(chǔ)模擬出物理效果。這樣有兩個(gè)好處,首先是精靈的運(yùn)動(dòng)會(huì)更加真實(shí),包括精靈間的相互碰撞、自由落體等,

4、然后就是可以增加操作的隨機(jī)性,從而提高游戲的游戲性。整體的處理碰撞機(jī)制。雖然絕大部分碰撞的邏輯可以完全不依賴物理引擎來自己實(shí)現(xiàn),但是如果一個(gè)游戲需要頻繁地大量地處理碰撞的時(shí)候,物理引擎絕對(duì)是第一選擇,因?yàn)槲锢硪婵梢韵到y(tǒng)化處理碰撞,并且能夠處理較為復(fù)雜的情況。關(guān)節(jié)與連接的模擬。例如,憤怒的小鳥游戲不僅要處理大量的碰撞,還要處理需要攻擊目標(biāo)建筑物之間的連接效果等。這時(shí)候用物理引擎來幫助實(shí)現(xiàn)不僅加快了開發(fā)速度,同時(shí)系統(tǒng)化的處理還可以提高程序的運(yùn)行效果。優(yōu)化的性能。物理引擎對(duì)于模擬物理效果的算法進(jìn)行了優(yōu)化,這些代碼都是經(jīng)歷過很多次推敲的,比個(gè)人實(shí)現(xiàn)的算法在整體的性能上要高。Box2D和和Chipmu

5、nk的對(duì)比的對(duì)比 2021/8/2移動(dòng)互聯(lián)網(wǎng)創(chuàng)新工場5和Cocos2D引擎一樣,Cocos2D-x同樣支持Box2D和Chipmunk兩個(gè)二維的物理引擎,那么在開發(fā)中如何選擇呢?二者又有何異同呢?Chipmunk是COCOS2D系列游戲引擎最早引入的物理引擎,用C語言實(shí)現(xiàn)。由于文檔較少,其使用程度沒有Box2D廣泛。Box2D由C+實(shí)現(xiàn),而且有JavaScript等其他語言的實(shí)現(xiàn),在Hash網(wǎng)頁動(dòng)畫等方面應(yīng)用也比較廣泛,因此大多數(shù)開發(fā)人員比較偏愛Box2D。單純從功能上來說,Box2D和Chipmunk并沒有太大的區(qū)別,只是有一些微小的區(qū)別.比如Box2D針對(duì)快速移動(dòng)的物體“穿越”另一物體有特

6、殊的檢測方式。除非你對(duì)某種功能有著特殊的需求,否則二者在功能上沒有本質(zhì)的區(qū)別。在使用上,由于二者的實(shí)現(xiàn)語言不同,所以從自己熟悉的語言開始會(huì)相對(duì)容易一些。另外,Chipmunk有不錯(cuò)的Objective-C語言接口,對(duì)于蘋果系列設(shè)備的開發(fā)更好一些,尤其在Cocos2D-iPhone中,因此,之前使用Cocos2D-iPhone可能也會(huì)更傾向于使用Chipmunk。 Box2D物理引擎物理引擎 2021/8/2移動(dòng)互聯(lián)網(wǎng)創(chuàng)新工場6Box2D是用C+編寫的,開發(fā)者是ErinCatto。他從2005年開始就在著名的GDC(GameDevelopersConference, 游戲開發(fā)者會(huì)議)上做物理模擬

7、相關(guān)的演講。2007年9月,他公布了Box2D物理引擎。Box2D以其出色的物理模擬效果和開源的氏性得到了開發(fā)者的認(rèn)同。從那以后,Box2D引擎的開發(fā)就十分活躍,Box2D的各種實(shí)現(xiàn)版本就層出不窮,包括用于Flash網(wǎng)頁游戲的版本。Box2D和手機(jī)游戲的結(jié)緣可以說是從Box2D的Java版本岀現(xiàn)開始。開發(fā)者喜歡在Android的游戲開發(fā)時(shí)集成Box2D來幫助開發(fā)更炫的游戲效果。自從Box2D集成到C0C0S2D系列引擎以后,Box2D和手機(jī)游戲的聯(lián)系更加緊密。 BOX2D引擎中的重要概念引擎中的重要概念 2021/8/2移動(dòng)互聯(lián)網(wǎng)創(chuàng)新工場7本部分介紹Box2D引擎中的重要概念,這些概念是構(gòu)成B

8、ox2D世界的基礎(chǔ)。剛體(rigidbody):不會(huì)發(fā)生形變的物體,其任何兩點(diǎn)間的距離是不變的。形狀(shape):依附于物體的二維的形狀結(jié)構(gòu),具有摩擦和恢復(fù)的材料屬性。約束(constraint):約束就是限制物體自由的物理連接:在二維中,物體有三個(gè)自由度,比如把一個(gè)物體固定在墻上,它只能繞著固定的點(diǎn)旋轉(zhuǎn),它失去了兩個(gè)自由度。接觸約束(contactconstraint):自動(dòng)創(chuàng)建的約束,防止剛體穿透、模擬摩擦和恢復(fù)的特殊約束,不需要手動(dòng)創(chuàng)建。關(guān)節(jié)(joint):把兩個(gè)物體固定在一起的約束,包括旋轉(zhuǎn)、距離和棱柱等。關(guān)節(jié)可以支持限制和馬達(dá)。關(guān)節(jié)馬達(dá)(jointmotor):個(gè)關(guān)節(jié)馬達(dá)依靠自由度

9、來驅(qū)動(dòng)物體,比如使用馬達(dá)來驅(qū)動(dòng)旋轉(zhuǎn)。關(guān)節(jié)限制(jointlimk):限制關(guān)節(jié)的運(yùn)動(dòng)范圍如同人的胳賻只能在一定范圍內(nèi)運(yùn)動(dòng)一樣。世界(world):物體、形狀和約束互相作用形成的世界:允許創(chuàng)建多個(gè)世界。Box2D的使用步驟的使用步驟 2021/8/2移動(dòng)互聯(lián)網(wǎng)創(chuàng)新工場8Box2D物理引擎的使用步驟如下,同時(shí)也是大多數(shù)物理引擎所采用的方式。1)創(chuàng)建一個(gè)世界,同時(shí)設(shè)置其參數(shù)。2)創(chuàng)建剛體地面,定義一個(gè)形狀,把它綁定在剛體上:3)創(chuàng)建世界中的其他剛體和約束等。4)在游戲的邏輯循環(huán)中加人物理引擎的世界更新函數(shù)。整個(gè)過程很清晰,主要目的就是將負(fù)責(zé)渲染的C0c0S2D-x引擎部分和負(fù)責(zé)物理邏輯的Box2D部分

10、結(jié)合在一起。這也是在其他平臺(tái)上使用BOX2D時(shí)需要讀的事情,其中的創(chuàng)建剛體、約束和關(guān)節(jié)等是最關(guān)鍵的部分,也是和渲染的C0c0S2D-x引擎部分結(jié)合的關(guān)鍵部分。 在在Cocos2D-x中使用中使用Chipmunk 2021/8/2移動(dòng)互聯(lián)網(wǎng)創(chuàng)新工場9Chipmunk引擎由HowlingMoonSoftware的ScottLebcke開發(fā),由C語言編寫,項(xiàng)目兩址是http:/c0de.g00gle.c0m/p/chipmunk-physics/,論壇地址是http:/chipmunk- 相關(guān)代碼 請(qǐng)參見書籍10.3中的實(shí)例小結(jié)小結(jié)2021/8/2移動(dòng)互聯(lián)網(wǎng)創(chuàng)新工場10本章介紹了Cocos2D-x支持的兩個(gè)物理引擎:Box

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論