Unity中可以使用物理關(guān)節(jié)組件使物體連接起來(lái)秧耗,如圖1.1是給游戲?qū)ο筇砑雨P(guān)節(jié)組件的步驟:
也可以在物體的Inspector視圖中通過(guò)Add來(lái)添加备籽。
下面就介紹一下Unity中的各種關(guān)節(jié)組件。
1分井、Hinge Joint-鉸鏈關(guān)節(jié)
鉸鏈關(guān)節(jié)由兩個(gè)游戲?qū)ο蟮膭傮w組成车猬,該關(guān)節(jié)會(huì)對(duì)剛體進(jìn)行約束霉猛,使它們就好像被連接在一個(gè)鉸鏈上那樣運(yùn)動(dòng)。它非常適用于對(duì)門的模擬诈唬,也適用在模型鏈以及鐘擺等物體上韩脏。鉸鏈關(guān)節(jié)組件的屬性面板如圖1.2:
- Connected Body:連接的剛體。該項(xiàng)用于為關(guān)節(jié)指定要連接的剛體铸磅,直接把需要連接的物體(必須有剛體)從Hierarchy視圖中拖過(guò)來(lái)就行赡矢,若不指定則默認(rèn)該關(guān)節(jié)與世界相連。
- Anchor:錨點(diǎn)阅仔。剛體可圍繞錨點(diǎn)進(jìn)行擺動(dòng)吹散,這里可以設(shè)置錨點(diǎn)的位置,該值應(yīng)用于局部坐標(biāo)系中(也就是物體自己的坐標(biāo)系)八酒。
- Axis:軸空民。定義了剛體擺動(dòng)的方向,該值同樣應(yīng)用于局部坐標(biāo)系羞迷。
- Auto Configure Connected Anchor:自動(dòng)設(shè)置連接錨點(diǎn)界轩。選中該項(xiàng),連接錨點(diǎn)會(huì)自動(dòng)設(shè)置衔瓮,該項(xiàng)默認(rèn)是開(kāi)啟狀態(tài)浊猾。
- Connected Anchor:連接錨點(diǎn)。當(dāng)Auto Configure Connected Anchor選項(xiàng)開(kāi)啟時(shí)热鞍,該項(xiàng)會(huì)自動(dòng)設(shè)置(無(wú)法手動(dòng)更改)葫慎;當(dāng)Auto Configure Connected Anchor未開(kāi)啟時(shí),可以手動(dòng)設(shè)置連接錨點(diǎn)薇宠。如圖1.3
其中有兩個(gè)錨點(diǎn)偷办,Anchor設(shè)置了圖1.3中位于上方的那個(gè)錨點(diǎn)的位置,Connected Anchor則設(shè)置了位于下方的那個(gè)錨點(diǎn)的位置澄港;而Axis則決定了兩個(gè)錨點(diǎn)的指向方向椒涯,也就是定義了剛體擺動(dòng)的方向。
- Use Spring:使用彈簧回梧。選中該項(xiàng)逐工,則彈簧會(huì)使剛體與其相連的物體形成一個(gè)特定的角度。
- Spring:彈簧漂辐。當(dāng)Use Spring開(kāi)啟時(shí)此屬性才有效。
Spring:彈簧力棕硫。該項(xiàng)用于設(shè)置推動(dòng)對(duì)象使其移動(dòng)到相應(yīng)位置的作用力髓涯。
Damper:阻尼。用于設(shè)置對(duì)象的阻尼值哈扮,數(shù)值越大則對(duì)象移動(dòng)得越慢纬纪。
Target Position:目標(biāo)角度蚓再。用于設(shè)置彈簧的目標(biāo)角度,彈簧會(huì)拉向此角度包各,以度為測(cè)量單位摘仅。就是以連接錨點(diǎn)-Connected Anchor為軸,兩個(gè)物體分別和連接錨點(diǎn)的連線形成的角度需要達(dá)到該值问畅。 - Use Motor:使用發(fā)動(dòng)機(jī)娃属。選中該項(xiàng)后發(fā)動(dòng)機(jī)會(huì)使對(duì)象發(fā)生旋轉(zhuǎn)。
- Motor:發(fā)動(dòng)機(jī)护姆。當(dāng)Use Motor開(kāi)啟時(shí)有效矾端。
Target Velocity:目標(biāo)速度。用于設(shè)置對(duì)象預(yù)期達(dá)到的速度值卵皂。
Force:作用力秩铆。用于設(shè)置為了達(dá)到目標(biāo)速度而施加在對(duì)象上的作用力大小。
Free Spin:自由轉(zhuǎn)動(dòng)灯变。選中該項(xiàng)殴玛,則發(fā)動(dòng)機(jī)永遠(yuǎn)不會(huì)停止,對(duì)象旋轉(zhuǎn)只會(huì)越來(lái)越快添祸。 - Use Limits:使用限制滚粟。選中該項(xiàng),則鉸鏈的角度將被限定在最大值和最小值之間膝捞。
- Limits:限制坦刀。當(dāng)Use Limits開(kāi)啟時(shí)有效。
Min:最小值蔬咬。用于設(shè)置鉸鏈能達(dá)到的最小角度鲤遥。
Max:最大值。用于設(shè)置鉸鏈能達(dá)到的最大角度林艘。
Min Bounce:最小反彈盖奈。用于設(shè)置當(dāng)對(duì)象觸到最小限制時(shí)的反彈值。
Max Bounce:最大反彈狐援。用于設(shè)置當(dāng)對(duì)象觸到最大限制時(shí)的反彈值钢坦。
Contact Distance:接觸距離,用于控制關(guān)節(jié)的抖動(dòng)啥酱。 - Break Force:斷開(kāi)力爹凹。用于設(shè)置鉸鏈關(guān)節(jié)斷開(kāi)的作用力大小,Infinity代表無(wú)限大镶殷。
- Break Torque:斷開(kāi)扭矩禾酱。用于設(shè)置斷開(kāi)鉸鏈關(guān)節(jié)所需要的扭矩大小。
- Enable Collision:激活碰撞。若選中此項(xiàng)颤陶,則關(guān)節(jié)之間也會(huì)檢測(cè)碰撞颗管。
- Enable Preprocessing:?jiǎn)⒂妙A(yù)處理實(shí)現(xiàn)關(guān)節(jié)的穩(wěn)定。默認(rèn)開(kāi)啟滓走。
鉸鏈關(guān)節(jié)的一些理解
單獨(dú)的鉸鏈關(guān)節(jié)需要應(yīng)用到一個(gè)游戲?qū)ο笊峡呀梢圆挥媒o關(guān)節(jié)的Connected Body添加對(duì)象(此時(shí)相當(dāng)于和世界相連),當(dāng)希望關(guān)節(jié)的Transform屬性依賴于連接對(duì)象的Transform屬性時(shí)可以為關(guān)節(jié)的Connected Body屬性添加對(duì)象搅方。多個(gè)鉸鏈關(guān)節(jié)也可以串聯(lián)起來(lái)形成一條鏈條比吭,可以給鏈條的每一個(gè)環(huán)添加關(guān)節(jié),并向Connected Body那樣依次添加下一環(huán)上腰懂。
2梗逮、Fixed Joint-固定關(guān)節(jié)
固定關(guān)節(jié)組件用于約束一個(gè)游戲?qū)ο髮?duì)另一個(gè)游戲?qū)ο蟮倪\(yùn)動(dòng)。類似于對(duì)象的父子關(guān)系绣溜,但是它是通過(guò)物理系統(tǒng)來(lái)實(shí)現(xiàn)而不是像父子關(guān)系那樣是通過(guò)Transform屬性來(lái)進(jìn)行約束慷彤。固定關(guān)節(jié)適用于以下的情形:當(dāng)希望將對(duì)象較容易與另一個(gè)對(duì)象分開(kāi)時(shí),或者連接兩個(gè)沒(méi)有父子關(guān)系的物體使其一起運(yùn)動(dòng)時(shí)怖喻,使用固定關(guān)節(jié)的對(duì)象自身需要有剛體組件底哗。固定關(guān)節(jié)組件的屬性面板如圖1.4
它的屬性在鉸鏈關(guān)節(jié)中都有講到(意義都是一樣的),這里不再重復(fù)锚沸。
當(dāng)需要某些物體暫時(shí)或永久性的粘在一起時(shí)跋选,就非常適用固定關(guān)節(jié)組件。該組件不需要通過(guò)腳本來(lái)更改層級(jí)結(jié)構(gòu)就可以實(shí)現(xiàn)想要的效果哗蜈,只需要為那些要使用固定關(guān)節(jié)的物體添加剛體組件即可前标。
可以通過(guò)Break Force和Break Torque屬性來(lái)設(shè)置關(guān)節(jié)的強(qiáng)度極限,如果這些參數(shù)不是無(wú)窮大而是一個(gè)數(shù)值的話距潘,當(dāng)施加到對(duì)象身上的力或轉(zhuǎn)矩大于此極限值時(shí)炼列,固定關(guān)節(jié)將被銷毀,其對(duì)象的約束也就隨即失效音比。
3俭尖、Spring Joint-彈簧關(guān)節(jié)
彈簧關(guān)節(jié)組件可以將兩個(gè)剛體連接在一起,使其像連接著彈簧那樣運(yùn)動(dòng)洞翩,其屬性面板如圖1.5:
和鉸鏈關(guān)節(jié)組件中重復(fù)的屬性就不再重復(fù)稽犁。
- Min Distance:最小距離。用于設(shè)置彈簧啟用的最小距離值骚亿。如果兩個(gè)物體之間的當(dāng)前距離與初始距離的差大于該值已亥,則不會(huì)開(kāi)啟彈簧。
- Max Distance:最大距離来屠。用于設(shè)置彈簧啟用的最大距離值陷猫。如果兩個(gè)物體之間的當(dāng)前距離與初始距離的差小于該值秫舌,則不會(huì)開(kāi)啟彈簧。
- Tolerance:容忍绣檬。用于設(shè)置彈簧能容忍的最大力,一旦超過(guò)這個(gè)值彈簧就會(huì)被破壞嫂粟,不再具有彈性娇未。
彈簧關(guān)節(jié)允許一個(gè)帶剛體的對(duì)象被拉向一個(gè)指定的目標(biāo)位置,這個(gè)目標(biāo)可以是另一個(gè)剛體對(duì)象或者世界星虹。當(dāng)游戲?qū)ο箅x目標(biāo)位置越來(lái)越遠(yuǎn)時(shí)零抬,彈簧關(guān)節(jié)會(huì)對(duì)其施加一個(gè)作用力使其回到初起時(shí)的位置,和現(xiàn)實(shí)中的彈簧一個(gè)道理宽涌。
當(dāng)彈簧關(guān)節(jié)被創(chuàng)建后平夜,其目標(biāo)位置是由從錨點(diǎn)到連接的剛體對(duì)象的相對(duì)位置所決定的,這使得在編輯器中將彈簧關(guān)節(jié)設(shè)置給角色或其他游戲?qū)ο蠓浅H菀仔读粒侨绻ㄟ^(guò)腳本來(lái)生成一個(gè)實(shí)時(shí)的推拉彈簧的操作就相對(duì)比較麻煩忽妒。如果想通過(guò)彈簧關(guān)節(jié)來(lái)控制游戲?qū)ο蟮奈恢茫ǔJ墙⒁粋€(gè)有剛體組件的空物體兼贸,然后將該空物體設(shè)置到Connected Rigidbody屬性上段直,這樣就可以通過(guò)腳本來(lái)控制空對(duì)象的移動(dòng)烘挫,進(jìn)而彈簧也會(huì)隨著空對(duì)象的移動(dòng)而移動(dòng)市怎。
4、Character Joint-角色關(guān)節(jié)
角色關(guān)節(jié)主要用于表現(xiàn)布娃娃效果词渤,它是擴(kuò)展的球關(guān)節(jié)螺垢,可以用于限制關(guān)節(jié)在不同旋轉(zhuǎn)軸下的旋轉(zhuǎn)角度喧务。角色關(guān)節(jié)組件的屬性面板如圖1.6和1.7:
介紹一下上面沒(méi)有講到的屬性。
- Swing Axis:擺動(dòng)軸枉圃。用于設(shè)置角色關(guān)節(jié)的擺動(dòng)軸功茴,以綠色的圓錐gizmo表示。其中橙色的圓錐gizmo表示了扭動(dòng)軸-Axis讯蒲,如圖1.8:
- Twist Limit Spring:彈簧的扭曲限制痊土。
Spring:用于設(shè)置角色關(guān)節(jié)扭曲的彈簧強(qiáng)度。
Damper:用于設(shè)置角色關(guān)節(jié)扭曲的阻尼值墨林。 - Low Twist Limit:扭曲下限赁酝。用于設(shè)置角色關(guān)節(jié)扭曲的下限。
Limit:用于設(shè)置角色關(guān)節(jié)扭曲的下限值旭等。
Bounciness:用于設(shè)置角色關(guān)節(jié)扭曲下限的反彈值酌呆。
Contact Distance:用于避免抖動(dòng)而限制的接觸距離。 - High Twist Limit:扭曲上限搔耕。用于設(shè)置角色關(guān)節(jié)扭曲的上限隙袁,對(duì)比扭曲下限痰娱,不再重復(fù)。
- Swing Limit Spring:彈簧的擺動(dòng)限制
Spring:彈簧強(qiáng)度菩收。用于限制彈簧的強(qiáng)度限制梨睁。
Damper:阻尼。用于設(shè)置彈簧的限制阻尼娜饵。 - Swing 1 Limit:擺動(dòng)設(shè)置1坡贺。參考上述Low Twist Limit。
- Swing 2 Limit:擺動(dòng)設(shè)置2箱舞。參考上述Low Twist Limit遍坟。
- Enable Projection:?jiǎn)⒂猛队啊S糜诩せ钔队啊?/li>
- Projection Distance:投影距離晴股。用于設(shè)置當(dāng)對(duì)象與其連接剛體的距離超過(guò)投影距離時(shí)愿伴,該對(duì)象會(huì)回到適當(dāng)?shù)奈恢谩?/li>
- Projection Angle:投影角度。用于設(shè)置當(dāng)對(duì)象與其連接剛體的角度超過(guò)投影角度時(shí)电湘,該對(duì)象會(huì)回到適當(dāng)?shù)奈恢谩?/li>
角色關(guān)節(jié)組件提供了很多可能性用于約束通用關(guān)節(jié)的運(yùn)動(dòng)隔节。
扭矩(以橙色的gizmo表示)為關(guān)節(jié)的運(yùn)動(dòng)提供了限制,扭矩允許用戶以角度的形式設(shè)置關(guān)節(jié)旋轉(zhuǎn)的下限和上限(角度是相對(duì)初始位置來(lái)衡量的)胡桨。如-20度的扭矩下限和70度的扭矩上限限制了繞扭動(dòng)軸(橙色gizmo)的旋轉(zhuǎn)角度在-20度到70度之間官帘。
Swing 1 Limit限制了繞擺動(dòng)軸的旋轉(zhuǎn)(綠色gizmo)。對(duì)擺動(dòng)軸旋轉(zhuǎn)角度的限制是對(duì)稱的昧谊,如設(shè)置Swing 1 Limit的限制角度為30度刽虹,則表示Swing 1 Limit的旋轉(zhuǎn)角度被限制在-30度和30度之間。
Swing 2 Limit沒(méi)有g(shù)izmo輔以表示呢诬,此軸垂直于扭動(dòng)軸和Swing 1 Limit涌哲。與Swing 1 Limit相同,對(duì)它的限制也是對(duì)稱的尚镰。
5阀圾、Configurable Joint-可配置關(guān)節(jié)
可配置關(guān)節(jié)組件支持用戶自定義關(guān)節(jié),它開(kāi)放了PhyX引擎中所有與關(guān)節(jié)相關(guān)的屬性狗唉,因此可以像其他類型的關(guān)節(jié)那樣來(lái)創(chuàng)造各種行為初烘。可配置關(guān)節(jié)中有兩類主要的功能:移動(dòng)/旋轉(zhuǎn)限制和移動(dòng)/旋轉(zhuǎn)加速度分俯∩隹穑可配置關(guān)節(jié)組件的屬性面板如圖1.9和2.0: