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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Box2d学习笔记三:box2d中几个重要的类

發布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Box2d学习笔记三:box2d中几个重要的类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們已經知道box2d中的唯一物種:剛體,然而僅僅一個剛體對象并不能完成相應的物理模擬。如果看過box2d的幫助文檔就知道,b2Body中提供的函數和屬性中,并沒有我們需要的物理屬性,可以回憶一下,我們讀高中那會兒,上知天文下知地理,那些物理量到現在還能記住一些。

為了很好的模擬現實的物理世界,box2d中當然會提供各種物理量,而這些物理量表現了剛體的各種性質,比如:摩擦力,恢復系數,力,扭矩等等,與高中不同的是,我們現在不需要那筆去計算什么什么運動軌跡,運動狀態,因為這些box2d會很好的幫我們計算了,我要做的是,了解各物理量并合適的設置他們,其它的交給物理引擎吧!


打開box2d幫助文檔,發現b2Body中并沒有提供相應的物理量,細心的人們會發現,里面有很多得到類的函數,這些類之前并沒有見過。下面就來介紹這些重要的類,就是他們完成了在box2d中的物理屬性設置。

框架(b2Fixture):封裝了物理屬性,用來完成各種物理模擬。

b2Fixture?*? CreateFixture?(const?b2FixtureDef?*def) 這是b2Body的方法,創建之后就表示該剛體有了框架,同框架的屬性也是他的了。注意(可以創建多個框架)
形狀(b2Shape):描述了框架的輪廓,它是附加在框架上,一起提供給剛體的。

關節(b2Joint):用來連接剛體,對剛體的運動做限制。(可以聯系人體的關節,有了關節,兩塊骨頭就不能胡亂運動了)

Ok,靠他們就能完成box2d中的各種物理模擬了,下面是練習的代碼:

上節中我們已經創建了世界和邊界,所以這里就直接寫出關鍵代碼了。

//創建剛體

b2BodyDef bodyDef1;
bodyDef1.position.Set(size.width/2/PTM_RATIO,size.height/2/PTM_RATIO);
bodyDef1.type=b2_dynamicBody; //設置剛體為動態的
b2Body *body1=world->CreateBody(&bodyDef1);

現在運行程序,并不能看到剛體,因為它還沒有形狀,只是知道世界中有一個剛體了,需要框架為它附加形狀,所以先創建形狀:

//使用多邊形

b2PolygonShape shape1;
shape1.SetAsBox(50.0f/PTM_RATIO,50.0f/PTM_RATIO);

為了節約時間,這里就用了最簡單的方式,創建了一個矩形,當然引擎中還提供了其它形狀,可以查看幫助文檔。

光有形狀還不行,形狀需要一個承載它的實體,它就是框架:

b2FixtureDef fixtureDef1;
fixtureDef1.shape=&shape1;? //在這里就把形狀和框架聯系起來了
fixtureDef1.density=1.0f;
fixtureDef1.friction=0.2f;
fixtureDef1.restitution=0.8f;

最后創建框架:

body1->CreateFixture(&fixtureDef1);

OK,現在就能看到剛體了,受重力作用,做自由落體運動。


總結

以上是生活随笔為你收集整理的Box2d学习笔记三:box2d中几个重要的类的全部內容,希望文章能夠幫你解決所遇到的問題。

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