關(guān)節(jié)組件-Joint

Unity中可以使用物理關(guān)節(jié)組件使物體連接起來(lái),如圖1.1是給游戲?qū)ο筇砑雨P(guān)節(jié)組件的步驟:

圖1.1

也可以在物體的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ì)門(mén)的模擬,也適用在模型鏈以及鐘擺等物體上。鉸鏈關(guān)節(jié)組件的屬性面板如圖1.2:

圖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
圖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ū)ο笊?,可以不用給關(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)。類(lèi)似于對(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

圖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é)將被銷(xiāo)毀,其對(duì)象的約束也就隨即失效。

3、Spring Joint-彈簧關(guān)節(jié)

彈簧關(guān)節(jié)組件可以將兩個(gè)剛體連接在一起,使其像連接著彈簧那樣運(yùn)動(dòng),其屬性面板如圖1.5:

圖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:

圖1.6
圖1.7

介紹一下上面沒(méi)有講到的屬性。

  • Swing Axis:擺動(dòng)軸。用于設(shè)置角色關(guān)節(jié)的擺動(dòng)軸,以綠色的圓錐gizmo表示。其中橙色的圓錐gizmo表示了扭動(dòng)軸-Axis,如圖1.8:
圖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)⒂猛队?。用于激活投影?/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)的屬性,因此可以像其他類(lèi)型的關(guān)節(jié)那樣來(lái)創(chuàng)造各種行為??膳渲藐P(guān)節(jié)中有兩類(lèi)主要的功能:移動(dòng)/旋轉(zhuǎn)限制和移動(dòng)/旋轉(zhuǎn)加速度??膳渲藐P(guān)節(jié)組件的屬性面板如圖1.9和2.0:

圖1.9
圖2.0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 首先要熟悉一些基本的力學(xué)名詞及相關(guān)公式 剛體(Rigidbody):剛體是指在運(yùn)動(dòng)中和受到力的作用后,形狀和大小不...
    FLY旳影子閱讀 12,185評(píng)論 0 11
  • 一、力場(chǎng)組件Constant Force 力場(chǎng)是一種為剛體快速添加恒定作用力的方法,使用與類(lèi)似火箭發(fā)射的對(duì)象,起初...
    _涼笙閱讀 712評(píng)論 0 1
  • 關(guān)節(jié)組件屬于物理組件的一部分,是模擬物體與物體之間的一種連接關(guān)系,關(guān)節(jié)必須依賴剛體組件。關(guān)節(jié)組件可添加到多個(gè)游戲?qū)?..
    90qq閱讀 716評(píng)論 0 0
  • 定義 把不同的剛體通過(guò)某種方式連接起來(lái),以達(dá)到不同物理特性的連接效果。如(車(chē)體與輪胎?,機(jī)器手臂?,門(mén)與門(mén)框?,彈...
    困卡閱讀 1,400評(píng)論 0 0
  • 一、物理編輯器的使用 在本系列博客的第一篇就介紹了如何使用Box2D內(nèi)置的幾種方式創(chuàng)建剛體的材質(zhì),然而我們?cè)陂_(kāi)發(fā)游...
    babybus_newapp閱讀 3,178評(píng)論 0 4

友情鏈接更多精彩內(nèi)容