999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Egret引擎P2物理系統技術研究

2018-02-26 07:53:50馮長寶佟鑫賈騁
電子技術與軟件工程 2018年15期

馮長寶 佟鑫 賈騁

摘要

通常情況下,游戲中的對象會按照物理規律進行移動,能體現重力、反作用力、加速度等物理特性,實現自由落體、拋物線運動、以及物理碰撞現象的模擬,給玩家帶來更多“真實”的游戲體驗。本文將介紹Egret引擎中物理引擎模塊1P2物理引擎,并將P2物理引擎的應用進行舉例分析。

【關鍵詞】Egret 物理運動 P2物理引擎

游戲中很多的物理運動都是由物理引擎來完成的,我們可以把游戲引擎看成是汽車的發動機,它決定著汽車的性能和穩定性,而汽車的速度、操作這些都是建立在引擎的基礎上的。游戲也是如此,在游戲中采用物理引擎,可以制作出賞心悅目的賽車游戲,還有血腥暴力的射擊游戲,有了物理引擎,可以最大限度的還原游戲的真實度。本文以創建一個P2物理項目為例,介紹在Egret引擎中使用P2物理引擎來完成對重力的模擬。

1 P2物理引擎介紹

國內較成熟的物理引擎包括Box2D,還有今天的主題P2物理引擎。Box2D是一款基于C++語言編寫的物理游戲引擎,被廣泛應用在各類物理游戲中,比如風靡一時的游戲《憤怒的小鳥》。雖然它給開發者提供了簡單友好的接口,但是在H5游戲平臺中,因為效率的限制它的表現沒有那么出色。來自斯德哥爾摩大學的Stefan Hedman,在基于Javascript的基礎上,開發出了一款面向H5游戲的2D物理引擎P2。集成了各種復雜的物理公式和算法,可以幫助我們輕松地實現碰撞、加速、自由落體等物理現象的模擬。

2 創建P2物理項目

在Egret引擎中通過P2物理引擎來完成對物理運動的模擬,一般的過程如下:導入P2引擎庫->創建世界world->創建地面ground->創建剛體->創建調試模擬視圖,刷新世界。

P2引擎庫的導入要使用Egret提供的第三方庫集成方法,在項目的配置文件egretProperties.json中添加第三方庫;將P2引擎以name命名為模塊,以path定義P2引擎庫的目錄路徑,應當注意的是P2引擎庫應與項目目錄同級;在IDE的終端面板中執行egret build-e命令就會把P2引擎庫編譯到項目中,成功后就可以使用了。

世界對應P2引擎庫中的World類,類似于渲染引擎中的stage舞臺,該World對象有一個Vec2類型的屬性gravity,模擬重力加速度;它有兩個元素,水平x方向和垂直y方向的分量,以數組來表示。當將gravity設置為[0,0]時表示為失重狀態,[0,10]表示只有垂直方向的重力,如果將x、y都設置非。的數值后,重力將不再是垂直向下的,而是朝[x,y]方向。

形狀是物理游戲中進行碰撞模擬的一個基礎,地面ground的創建是由Plane平面形狀來完成,這是一個特殊的形狀,它沿y軸負方向無限擴展,x軸的寬度也是無限的。Plane平面形狀需要添加到body剛體中,并通過調整剛體的angle角度,使平面朝向不同的方向,可以模擬墻體、地面。

接下來就是要創建游戲中的主角—body剛體了,剛體擁有速度、角度、質量等物理屬性,通過形狀對象來表現出具體的形狀,常見的形狀有圓形、矩形、膠囊形狀、粒子、線段、多邊形等。分別創建body剛體對象和shape形狀對象,并通過使用addShpe()方法將形狀添加到剛體中;設置形狀的屬性,position可以設置形狀相對于剛體本地坐標中心的偏移量,影響剛體的重心,angle設置形狀傾斜的角度,material設置形狀的材質,可以使形狀發生碰撞時表現出不同的特性。對于剛體對象來說,它本身也具有一定的屬性:速度、角度、質量等。我們通過position屬性來對剛體進行定位和移動,在進行物理模擬的過程中,會刷新剛體坐標;velocity設置剛體的線性速度,它是一個Vec2類型的對象,用數組來表示,數組中第一個元素表示水平方向的速度,當值>0時表示速度方向向右;第二個元素表示垂直方向的速度,當值>0時表示速度方向向下。

剛體創建完成就要對它進行形狀貼圖了,使剛體能夠以游戲圖像素材來顯示出來。貼圖的過程,就是要實時刷新圖像素材的坐標和角度,使其能夠與剛體對應上。為剛體添加自定義屬性userData,保存對應圖像素材的引用。world世界中所有的剛體都保存在bodies數組中,遍歷數組中的每一個剛體,如果其userData不為空,則實時更新對應圖像素材的坐標和角度。

模擬視圖通過p2DebugDraw類中的drawDebug()方法來實現,應用當前world對象創建一個p2DebugDraw類對象,并添加egret.Event.ENTER FRAME事件偵聽,在事件偵聽回調函數中,調用drawDebugo方法,繪制P2引擎中的所有剛體對象,對所有剛體實時刷新。

由于我們將world對象通過gravity屬性設置了重力加速度,當剛體對象在舞臺上創建后,由于重力加速度將垂直向下進行運動,當與plane平面形狀發生碰撞時,由于每個剛體的material材質屬性不同,發生碰撞后反彈的速度會不相同。

3 結論

本文從P2引擎的基本元素入手,分析探討了P2引擎庫的導入,如何去創建一個物理模擬世界,通過對world,剛體等對象進行相應的屬性設置,實時刷新視圖模擬,來實現一個模擬重力運動。

參考文獻

[1]張鑫磊.Egret HTML5游戲開發指南.北京:電子工業出版社,2016.

[2]認識HTML5 2D物理引擎P2.ht tp://bbs.egret.com/thread-6950-1-1.html.

主站蜘蛛池模板: 激情無極限的亚洲一区免费| 亚洲精品老司机| 国产本道久久一区二区三区| 国产va在线| 国产精品大尺度尺度视频| 亚洲国产成人精品青青草原| 久久久受www免费人成| 91视频青青草| 亚洲天堂视频在线免费观看| 特级毛片免费视频| 欧美精品成人| 毛片视频网| 亚国产欧美在线人成| 亚洲高清在线天堂精品| 国产剧情国内精品原创| 一级做a爰片久久毛片毛片| 国产99免费视频| 亚洲AV无码乱码在线观看裸奔| 91亚洲视频下载| 国产激情无码一区二区免费| yjizz国产在线视频网| 亚洲欧美另类专区| 日韩一区二区在线电影| 国产微拍一区| 欧美在线精品怡红院| 国产亚洲精久久久久久无码AV| 欧美不卡二区| 亚洲经典在线中文字幕| 55夜色66夜色国产精品视频| 一级毛片免费的| 无码aaa视频| 亚洲色无码专线精品观看| 亚洲av无码人妻| 国产91蝌蚪窝| av在线手机播放| 亚洲乱伦视频| 91在线播放国产| 国产美女91视频| 91色在线视频| 真人免费一级毛片一区二区| 色哟哟国产精品一区二区| 欧美无专区| 波多野结衣亚洲一区| 亚洲无卡视频| 日韩成人午夜| 亚洲欧洲日韩久久狠狠爱 | 国产激情无码一区二区三区免费| 国产成人精品视频一区二区电影| 久久久久久高潮白浆| 亚洲日韩高清无码| 婷婷综合缴情亚洲五月伊| 亚洲成AV人手机在线观看网站| 国产成人精品2021欧美日韩| 日韩高清在线观看不卡一区二区| 成人日韩欧美| 色婷婷电影网| 亚洲欧美另类久久久精品播放的| 一级高清毛片免费a级高清毛片| 美女国内精品自产拍在线播放| 97久久超碰极品视觉盛宴| 欧美日本中文| 国产哺乳奶水91在线播放| 国产a网站| 女同久久精品国产99国| 欧美日韩综合网| 国产精品极品美女自在线| 国产丝袜91| 亚洲午夜久久久精品电影院| 国产在线98福利播放视频免费| 国产成人综合久久| 国产00高中生在线播放| 日本在线亚洲| 欧美午夜理伦三级在线观看| 亚洲国产高清精品线久久| 久久国语对白| 国产视频一区二区在线观看| 精品无码国产一区二区三区AV| 欧美精品成人一区二区视频一| 久久精品无码一区二区国产区| 成人va亚洲va欧美天堂| 999精品视频在线| 四虎在线观看视频高清无码|