日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

初识 Box2D世界

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初识 Box2D世界 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ?本文你可以初步認識下這個強大的物理引擎,你將會學到創建一個簡單的Box2D應用基本流程,了解b2World物理世界,這個世界力的基本作用 --- 重力,以及如何開啟Box2D調試試圖。

1.1 什么是Box2D引擎

? ? ? ?Box2D集成了大量的物理力學和運動學的計算,并將物理模擬過程封裝到類對象中,將對物體的操作,以簡單友好的接口提供給開發者。我們只需要調用引擎中相應的對象或函數,就可以模擬現實生活中的加速、減速、拋物線運動、萬有引力、碰撞反彈等等各種真實的物理運動。簡單的說,Box2D就是一個物理剛體仿真庫

1.2?創建Box2D世界

? ? ??Box2D中用 b2World 類來表示世界,他是Box2D 的核心類之一,集成了Box2D對所有對象的創建,刪除,碰撞模擬的相關?接口。

12.1 重力

? ? 重力,簡單的將就是使用物體自然下落的力,Box2D 中 b2Vec2 向量類來模擬作用力,分別為 x,y 兩個參數。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創建一個重力的代碼如下:

let gravity:Box2D.Common.Math.b2Vec2 = new Box2D.Common.Math.b2Vec2(0,9.8);

應為重力是向下的所以水平方向為: 0 。

1.2.2 創建世界

? ? “世界” 在 Box2D 中用 b2World 類來表示。 b2World類的構造函數中有兩個參數每一個就是前面所說的重力 gravity 。

? ? 另外一個是 doSleep的 布爾值參數 ,表示box2d 引擎是否將靜止不動的剛體設置為睡眠狀態。

? ?// 為 true 時 將靜止的剛體標記為隨眠狀態,在遍歷的時候直接跳過去,不進行運動模擬計算,提高了Box2D的計算效率,節省CPU

接下來用代碼來實現一個世界

private _world:b2World;// 創建物理世界private create2bWorld():void{let gravity:Box2D.Common.Math.b2Vec2 = new Box2D.Common.Math.b2Vec2(0,10); // 重力 let doSleep:boolean = true; // 為 true 時 將靜止的剛體標記為隨眠狀態,在遍歷的時候直接跳過去,不進行運動模擬計算,提高了Box2D的計算效率,節省CPU this._world = new b2World(gravity,doSleep);}

1.3 開啟 Box2D 模擬

? ? 每一幀基于大量的物理運動公式,計算出剛體的坐標,角度,速度等等,形成動態的物理模擬效果。 box2D已經把這個復雜的計算過程封裝成 step()的函數中。 我們只需每一幀調用這個函數既可以了。

? ? a.? ?delat: 每次更新計算之間經過的時間。 2bworld.step() 時也要經過一定的時間,假設這個時間時 interval 秒(或者你可以理解成每一幀持續的時間 1/fps秒),當 delta小于 interval時,呈現出來就是慢放效果,反之則 快進效果,所以保證 delta == interval 跟重要。

? ? 大部分游戲都是基于幀頻進行的,而且在30以上才能保證流暢,所以 interval = 1/30秒.

? ? b. positionDelta: 取值越大,單次step()物理模擬碰撞重疊的矯正精度越高,但消耗就越大。通常為10

? ? c. velocityDelta:? 兩個不同速度運動體發生碰撞時,根據物體的質量,速度大小和方向,會重新分配,取值越大矯正越精確,消耗就越大 通常為10即可。

private update():void{this._world.Step(1/30,10,10);}

? ? 好了我們已經完美的創建了一個box2d世界.接下來就是給世界添加剛體(b2Box2d)

? ??

總結

以上是生活随笔為你收集整理的初识 Box2D世界的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。