【Unity】11.8 關節


分類:Unity、C#、VS2015

創建日期:2016-05-02

一、簡介

Unity提供了下面的關節組件:鉸鏈關節(Hinge Joint)、固定關節(Fixed Joint)、彈簧關節(Spring Joint)、角色關節(Character Joint)、可配置關節(Configuration Joint)。

本節簡單介紹這些組件的含義。

二、鉸鏈關節(Hinge Joint)

鉸鏈關節(Hinge Joint)由兩個剛體組成,該關節會對剛體進行約束,使它們就好像被連接在一個鉸鏈上那樣運動。它非常適用於對門的模擬,也適用於對模型鏈及鍾擺等物體的模擬。

1、添加鉸鏈關節組件

依次打開菜單欄中的【Component】->【Physics】->【Hinge Jont】,即可為所選擇的游戲對象添加鉸鏈關節組件。

2、屬性

·Connected Body:連接剛體。為關節指定要連接的剛體,若不指定則該關節將與世界坐標系相連接。

·Anchor:錨點。剛體可圍繞錨點進行擺動,這里可以設置錨點的位置,該值應用於局部坐標系。

·Axis:軸。定義剛體擺動的方向,該值應用於局部坐標系。

·Use Spring:使用彈簧。勾選該項,則彈簧會使剛體和與其鏈接的主體形成—個特定的角度。

Spring:彈簧。當Use Spring參數開啟時此屬性有效。

Spring:彈簧力。該項用於設置推動對象使其移動到相應位置的作用力。

· Damper:阻尼。設置對象的阻尼值,數值越大則對象移動得越慢。

Target Position:目標角度。該頂用於設置彈簧的目標角度,彈簧會拉向此角度,以度為測量單位。

·UseMotor:使用馬達。勾選該項,馬達會使對象發生旋轉。

·Motor:馬達。當Use Motor參數開啟時,此屬性會被用到。

Target Velocity:目標速度。設置對象預期將要達到的速度值。

Force:作用力。設置為了達到目標速度而施加的作用力。

Free Spin:自由轉動。勾選該項,則馬達永遠不會停止,旋轉只會越轉越快。

·Use Limits:使用限制。勾選該頂,則鉸鏈的角度將被限定在最大值相最小值之間。

·Limits:限制。當Use Limits開啟時,此屬性將會被用到。

Min:最小值。設置鉸鏈能達到的最小角度。

Max:最大值。設置鉸鏈能達到的最大角度。

Min Bounce:最小反彈。設置當對象觸到最小限制時的反彈值。

Max Bounce:最大反彈。該頊用於設置當對象觸到最大限制時的反彈值。

·Break Force:斷開力。設置鉸鏈關節斷開的作用力。

·BreakTorque:斷開轉矩。沒置斷開鉸鏈節點所需的轉矩。

單獨的鉸鏈關節要應用到一個游戲對象上,鉸鏈或繞着Anchor屬性所指定的點來旋轉,按照Axis屬性指定的軸來移動。不用給關節的Connected Body屬性添加對象,只有當希望關節的Transform屬性依賴於附加對象的Transform屬性時才為關節的Connected Body屬性來添加對象。多個鉸鏈關節也可以串聯起來形成一條鏈條,可以給鏈條的每—個環添加關節,並向Connected Body那樣添加到下一環上。

技巧:不需要指定Connected Body屬性來運轉關節。可調整Spring、Motor、Limits等屬性來驚喜調整關節的行為狀態。

三、固定關節(Fixed Joint)

固定關節組件用於約束一個游戲對象對另一個游戲對象的運動。類似於對象的父子關系,但它是通過物理系統來實現而不像父子關系那樣是通過Transform屬性來進行約束。

固定關節適用於以下的情形:當希望將對象較容易與另—個對象分開時,或者連接兩個沒有父子關系的對象使其一起運動,使用固定關節的對象自身需要有—個剛體組件。

1、添加固定關節組件

依次打開菜單欄中的【Component】->【Physics】->【Fixed Joint】選項,就可以為所選擇的游戲對象添加固定關節組件。

2、屬性

·Connected Body:連接剛體。指定關節要連接的剛體,若不指定則該關節將與世界坐標系相連接。

·Break Force:斷開力。設置關節斷開的作用力。

·Break Torque:斷開轉矩。設置斷開關節所需的轉矩。

有時游戲中會存在這樣的情景:當希望要某些游戲對象暫時或永久性的地粘在一起,這時就很適合使用固定關節組件。該組件不需要通過腳本來更改層級結構就可以實現想要的效果,只需要為那些要使用固定關節的游戲對象添加剛體組件即可。

可通過Break Force和BreakTorque屬性來沒置關節的強度極限,如果這些參數不是無窮大而是—個數值,那么當施加到對象身上的力或轉矩大於此極限值時,固定關節將被銷毀,其對對象的約束也就隨即失效。

四、彈簧關節(Spring Joint)

彈簧關節組件可將兩個剛體連接在—起,使其像連接着彈簧那樣運動。

依次打開菜單欄中的Component->Physics->Spring Joint選頂,即可為所選擇的對象添加彈簧關節組件。

其屬性和前面介紹的屬性相似,此處就不重復了。

彈簧關節允許一個帶有剛體的游戲對象被拉向—個指定的目標位置,這個目標可以是另一個剛體對象或者世界。當游戲對象離目標位置越來越遠時,彈簧關節會對其施加一個作用力使其回到目標的原點位置,類似橡皮筋或者彈弓的效果。

當彈簧關節被創建后(預覽游戲模式下),其目標位置是由從錨點到連接的剛體(或世界)的相對位置所決定的,這使得在編輯器中將彈簧關節設定給角色或其他游戲對象非常容易,但是如果通過腳本來生成一個實時的推拉彈簧的行為就相對比較困難。

如果想通過彈簧關節來控制游戲對象的位置,通常是建立一個帶有剛體的空對象,然后將該空對象設置到Connected Regidbody屬性上,這樣就可以通過腳本來控制空對象的移動,這樣一來,彈簧也會隨着空對象的位移而移移動了。

五、角色關節(Character Joint)

角色關節主要用於表現布娃娃效果,它是擴展的球關節,可用於限制每一個軸向上的關節。

依次打開菜單欄中的Component->Physics->Character Jont選項,就可以為所選擇的游戲對象添加角色關節組件。

角色關節的屬性和前面介紹的屬性相似,此處僅介紹一些不重復的選項。

·Swing Axis:擺動軸。設置角色關節的擺動軸,以綠色的圓錐gizmo表示。

·Low Twist Limit:扭曲下限。設置角色關節扭曲的下限。

Limit:設置角色關節扭曲的下限值。

Bounciness:設置角色關節扭曲下限的反彈值。

Spring:設置角色關節扭曲下限的彈簧強度。

Damper:設置角色關節扭曲下限的阻尼值。

·High Twist Limit:扭曲上限。設置角色關節扭曲的上限。

·Break Force:斷開力。控制角色關節斷開所需的作用力。

·Break Torque:斷開轉矩。設置角色關節斷開所需的轉矩。

六、可配置關節(Configuration Joint)

可配置關節組件支持用戶自定義關節,它開放了Physics引擎中所有與關節相關的屬性,因此可像真他類型的關節那樣來創造各種行為。

可配置關節有兩類主要的功能:移動/旋轉限制和移動/旋轉加速度。

依次打開菜單欄中的Component->Physics-> Configuration Joint項,即可為所選擇的對象添加可配置關節組件。

1、移動旋轉限制

可以為每個旋轉軸和運動類型指定約束。針對X軸、Y軸以及Z軸運動可定義沿不同軸的移動,而針對X軸、Y軸、Z軸旋轉可定義沿不同軸的旋轉,這些屬性可以被沒定為Free(不受約束)、Limited(受自定義的限制)及Locked(鎖定狀態無法運動)。

1)移動限制:如果游戲對象某個軸的Motion屬性設定為Limied,則可通過修改Limited屬性值來設定該軸的運動約束值。對於平移運動,Linear Limited屬性將沒定該對象能夠遠離原點的最大距離,通過該屬性下的Limit數值可以對Motion屬性值為Limited的任何移動進行約束。

2)旋轉限制:旋轉限制與移動限制相類似,只是Angular Motion屬性是與Angular Limit相關。Linear Limit屬性設定了對3個軸在移動上的約束,而Angular Limit屬性則設定了對於3個軸在旋轉上的約束。

2、移動旋轉加速度

使對象到達指定的位置或方向運動,或到達指定的速度或角速度。此系統的工作方式是:首先定義一個想要達到的目標,然后通過驅動力來提供加速度以便使其到達此目標,每一個驅動都有一個模式,通過此模式可定義該對象當前的目標。

1)移動加速度X、Y、Z軸驅動屬性使游戲對象沿着特定的軸來移動,每個驅動模式指定的對象是朝着目標位置還是目標速度抑或是兩者兼而有之的運動方式。比如當X軸驅動設置為Position時,對象會朝着X軸的目標位置去移動。

當驅動模式為Position時,它的位置彈簧值將決定其如何朝着目標位置運動;同樣,當驅動模式為Velocity時,它的最大作用力將決定該對象如何被加速至目標速度。

2)旋轉加速度:旋轉加速度屬性為X軸角、YZ軸角驅動及插值驅動,其功能與移動驅動基本相同,只是插值驅動與角驅動在功能上表現不同。可以在旋轉驅動模式中選擇是采用角驅動還是插值驅動,但這兩種驅動不能同時被使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM