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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Box2d学习笔记三:box2d中几个重要的类 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們已經(jīng)知道box2d中的唯一物種:剛體,然而僅僅一個(gè)剛體對(duì)象并不能完成相應(yīng)的物理模擬。如果看過(guò)box2d的幫助文檔就知道,b2Body中提供的函數(shù)和屬性中,并沒(méi)有我們需要的物理屬性,可以回憶一下,我們讀高中那會(huì)兒,上知天文下知地理,那些物理量到現(xiàn)在還能記住一些。

為了很好的模擬現(xiàn)實(shí)的物理世界,box2d中當(dāng)然會(huì)提供各種物理量,而這些物理量表現(xiàn)了剛體的各種性質(zhì),比如:摩擦力,恢復(fù)系數(shù),力,扭矩等等,與高中不同的是,我們現(xiàn)在不需要那筆去計(jì)算什么什么運(yùn)動(dòng)軌跡,運(yùn)動(dòng)狀態(tài),因?yàn)檫@些box2d會(huì)很好的幫我們計(jì)算了,我要做的是,了解各物理量并合適的設(shè)置他們,其它的交給物理引擎吧!


打開(kāi)box2d幫助文檔,發(fā)現(xiàn)b2Body中并沒(méi)有提供相應(yīng)的物理量,細(xì)心的人們會(huì)發(fā)現(xiàn),里面有很多得到類的函數(shù),這些類之前并沒(méi)有見(jiàn)過(guò)。下面就來(lái)介紹這些重要的類,就是他們完成了在box2d中的物理屬性設(shè)置。

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

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

關(guān)節(jié)(b2Joint):用來(lái)連接剛體,對(duì)剛體的運(yùn)動(dòng)做限制。(可以聯(lián)系人體的關(guān)節(jié),有了關(guān)節(jié),兩塊骨頭就不能胡亂運(yùn)動(dòng)了)

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

上節(jié)中我們已經(jīng)創(chuàng)建了世界和邊界,所以這里就直接寫(xiě)出關(guān)鍵代碼了。

//創(chuàng)建剛體

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

現(xiàn)在運(yùn)行程序,并不能看到剛體,因?yàn)樗€沒(méi)有形狀,只是知道世界中有一個(gè)剛體了,需要框架為它附加形狀,所以先創(chuàng)建形狀:

//使用多邊形

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

為了節(jié)約時(shí)間,這里就用了最簡(jiǎn)單的方式,創(chuàng)建了一個(gè)矩形,當(dāng)然引擎中還提供了其它形狀,可以查看幫助文檔。

光有形狀還不行,形狀需要一個(gè)承載它的實(shí)體,它就是框架:

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

最后創(chuàng)建框架:

body1->CreateFixture(&fixtureDef1);

OK,現(xiàn)在就能看到剛體了,受重力作用,做自由落體運(yùn)動(dòng)。


總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。