Unity物理引擎首次聽說這個(gè)名詞的時(shí)候覺得很高端大氣上檔次慈格,而開始真正去了解他的時(shí)候仍秤,覺得原來也就是那么回事失暂。物理引擎就是模擬物體在現(xiàn)實(shí)中的效果彼宠,而在現(xiàn)實(shí)中所有物體都收到重力的影響,所以物理引擎的核心組件也就是剛體了弟塞。
- Mass質(zhì)量凭峡,在場景中所有物體的質(zhì)量最好控制在100倍數(shù)以內(nèi)(最小質(zhì)量和最大物體的質(zhì)量的倍數(shù)),否則可能會(huì)出現(xiàn)一些小BUG宣肚。
- Drag 阻力想罕,這個(gè)我們應(yīng)該都不陌生,但是需要注意一點(diǎn)的是這個(gè)阻力應(yīng)該是空氣阻力霉涨,而如果我們想給他添加地面摩擦力按价,我們可以通過Physics Material這種材質(zhì)來添加。
- Angular Drag 角速度阻力笙瑟,也可以理解為旋轉(zhuǎn)阻力楼镐。如果這個(gè)力特別大,那他旋轉(zhuǎn)就特別困難往枷。
- Use Gravity 是否使用重力(當(dāng)我們添加Rigibody組件以后框产,該物體就是一個(gè)剛體,不管你是否選擇使用重力)
- Is Kinematic 是否是運(yùn)動(dòng)學(xué)错洁,如果勾選則該剛體不受物理引擎的影響秉宿,也可以理解為靜態(tài)剛體。(在碰撞檢測時(shí)屯碴,勾選上就屬于運(yùn)動(dòng)學(xué)剛體碰撞描睦,不勾選就是剛體碰撞)
-
Interpolate 插值
Paste_Image.png
假如我們的物體在運(yùn)動(dòng)中出現(xiàn)不正常抖動(dòng)的時(shí)候,就可以選擇第二項(xiàng)Interpolate或者第三項(xiàng)Extrapolate导而,意思就是執(zhí)行平滑操作忱叭,默認(rèn)的為第一項(xiàng)不執(zhí)行平滑操作隔崎,第二選項(xiàng)的意思,根據(jù)上一幀動(dòng)作韵丑,來添加平滑效果爵卒,第三個(gè)選項(xiàng)是系統(tǒng)預(yù)測下一幀動(dòng)作,來添加平滑效果撵彻。
- Collision Detection 碰撞檢測延遲(間隔時(shí)間)
disrete 不連續(xù)钓株,Continous連續(xù),Continuous Dynamic 動(dòng)態(tài)連續(xù)千康,這三個(gè)是從低到高排的享幽,越高則,物理引擎的計(jì)算量越大拾弃,付出的代價(jià)也就越高豪椿。有的時(shí)候當(dāng)我們速度過快時(shí)咳秉,剛體有的時(shí)候可能會(huì)穿過collider,而當(dāng)我們選擇第三項(xiàng)動(dòng)態(tài)連續(xù)監(jiān)測的時(shí)候炕舵,就不會(huì)穿過了。
- Constraints
Freeze Position 凍結(jié)在某個(gè)軸向的位移
Freeze Rotation 凍結(jié)在某個(gè)軸向的旋轉(zhuǎn)
注意 剛體休眠
在項(xiàng)目中有的時(shí)候可能會(huì)出現(xiàn)剛體休眠的情況,剛體休眠的時(shí)候睹耐,系統(tǒng)就不會(huì)對(duì)該剛體進(jìn)行計(jì)算硝训,此時(shí)如果物體發(fā)生靜態(tài)碰撞(在碰撞中會(huì)講到靜態(tài)碰撞)就會(huì)失效,檢測不到該剛體,而喚醒剛體彰导,我們可以通過三種方法
- 腳本控制 通過WakeUp的方法,喚醒剛體
- 動(dòng)態(tài)碰撞
- 給剛體施加力
ConstantForce
讓剛體移動(dòng)我們就需要給剛體一個(gè)力掏父,而這個(gè)力的添加我們可以通過一個(gè)ConstantForce這個(gè)組件來添加
我們看下這個(gè)組件的屬性
Force 是按照世界坐標(biāo)給該物體添加力
Relative Force 相對(duì)力陶缺,是按照自身坐標(biāo)系給物體添加力
Torque 按照世界坐標(biāo)添加扭矩力(就是旋轉(zhuǎn)力徽千,在哪個(gè)軸向添加罐栈,就會(huì)繞著哪個(gè)軸旋轉(zhuǎn))
Relative Torque 按照自身坐標(biāo)系添加扭矩力
我們這個(gè)組件只是添加一個(gè)恒定的力琅翻,我們除了這個(gè)組件,我們也可以通過代碼去控制給剛體添加力棠众,這樣更靈活空盼。