最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity-剛體

2021-10-28 23:41 作者:unity_某某師_高錦錦  | 我要投稿

剛體 (Rigidbody)使__游戲?qū)ο骭_的行為方式受物理控制。剛體可以接受力和扭矩,使對象以逼真的方式移動。任何游戲?qū)ο蠖急仨毎苤亓τ绊懙膭傮w,行為方式基于施加的作用力(通過腳本),或通過 NVIDIA PhysX 物理引擎與其他對象交互。

屬性

屬性:????????????????????????????????????????????????功能:

Mass對象的質(zhì)量(默認為千克)。

Drag根據(jù)力移動對象時影響對象的空氣阻力大小。0 表示沒有空氣阻力,無窮大使對象立即停止移動。

Angular Drag根據(jù)扭矩旋轉(zhuǎn)對象時影響對象的空氣阻力大小。0 表示沒有空氣阻力。請注意,如果直接將對象的 Angular Drag 屬性設置為無窮大,無法使對象停止旋轉(zhuǎn)。

Use Gravity如果啟用此屬性,則對象將受重力影響。

Is Kinematic如果啟用此選項,則對象將不會被物理引擎驅(qū)動,只能通過__變換 (Transform)__ 對其進行操作。對于移動平臺,或者如果要動畫化附加了?HingeJoint?的剛體,此屬性將非常有用。

Interpolate僅當在剛體運動中看到急動時才嘗試使用提供的選項之一。

-?None不應用插值。-?Interpolate根據(jù)前一幀的變換來平滑變換。

-?Extrapolate根據(jù)下一幀的估計變換來平滑變換。

Collision Detection用于防止快速移動的對象穿過其他對象而不檢測碰撞。

-?Discrete對場景中的所有其他碰撞體使用離散碰撞檢測。其他碰撞體在測試碰撞時會使用離散碰撞檢測。用于正常碰撞(這是默認值)。

-?Continuous對動態(tài)碰撞體(具有剛體)使用離散碰撞檢測,并對靜態(tài)碰撞體(沒有剛體)使用基于掃掠的連續(xù)碰撞檢測。設置為__連續(xù)動態(tài) (Continuous Dynamic)__ 的剛體將在測試與該剛體的碰撞時使用連續(xù)碰撞檢測。其他剛體將使用離散碰撞檢測。用于__連續(xù)動態(tài) (Continuous Dynamic)__ 檢測需要碰撞的對象。(此屬性對物理性能有很大影響,如果沒有快速對象的碰撞問題,請將其保留為?Discrete?設置)

-?Continuous Dynamic對設置為__連續(xù) (Continuous)__ 和__連續(xù)動態(tài) (Continuous Dynamic)__ 碰撞的游戲?qū)ο笫褂没趻呗拥倪B續(xù)碰撞檢測。還將對靜態(tài)碰撞體(沒有剛體)使用連續(xù)碰撞檢測。對于所有其他碰撞體,使用離散碰撞檢測。用于快速移動的對象。

-?Continuous Speculative對剛體和碰撞體使用推測性連續(xù)碰撞檢測。這也是可以設置運動物體的唯一 CCD 模式。該方法通常比基于掃掠的連續(xù)碰撞檢測的成本更低。

Constraints對剛體運動的限制:

-?Freeze Position有選擇地停止剛體沿世界 X、Y 和 Z 軸的移動。

-?Freeze Rotation有選擇地停止剛體圍繞局部 X、Y 和 Z 軸旋轉(zhuǎn)。

詳細信息

剛體可使游戲?qū)ο蟮男袨榉绞绞芪锢硪婵刂啤S纱丝梢詫崿F(xiàn)逼真碰撞和不同類型關(guān)節(jié)等行為。通過向剛體施力來操縱游戲?qū)ο螽a(chǎn)生的效果完全不同于直接調(diào)整變換__組件__。通常,不應同時操縱同一個游戲?qū)ο蟮膭傮w和變換 - 一次只能操縱其中一個。

操縱變換與剛體的最大區(qū)別在于力的運用。剛體可以接受力和扭矩,但變換不能。變換可以被平移和旋轉(zhuǎn),但這與使用物理引擎不同。親自嘗試使用二者會注意到明顯的差異。向剛體施加力/扭矩實際上會改變對象的變換組件位置和旋轉(zhuǎn)。這就是為何應該只使用其中一個組件的原因。使用物理引擎時更改變換可能會導致碰撞和其他計算問題。

必須先將剛體顯式添加到游戲?qū)ο笾?,然后才能讓剛體受到物理引擎的影響。可以從菜單中的?Components > Physics > Rigidbody?向所選對象添加剛體?,F(xiàn)在對象已經(jīng)完成物理設置;它會受到重力的影響而掉落,而且可以通過腳本來接受作用力,但可能需要添加一個__碰撞體__或關(guān)節(jié)來讓對象按照期望的方式運行。

父子化

當對象處于物理控制下時,對象的移動方式在一定程度上獨立于其變換父對象的移動方式。如果移動任何父對象,它們會將剛體子對象拉到自己身邊。但是,剛體仍然會因重力而降落,并會對碰撞事件作出反應。

腳本

要控制剛體,主要需要使用腳本來施加力或扭矩。要執(zhí)行此操作,可在對象的剛體上調(diào)用?AddForce()?和?AddTorque()。請記住,在使用物理引擎時,不應直接改變對象的變換。

動畫

在某些情況下,主要需要創(chuàng)建布娃娃效果,因此有必要在動畫和物理之間切換對象的控制。為此,可將剛體標記為?isKinematic。雖然剛體標記為 __isKinematic__,但不會受到碰撞、力或物理系統(tǒng)任何其他部分的影響。這意味著,必須通過直接操作變換組件來控制對象。運動剛體將影響其他對象,但它們自身不會受到物理影響。例如,附加到運動對象的關(guān)節(jié)將約束附加到關(guān)節(jié)的所有其他剛體,并且運動剛體將通過碰撞影響其他剛體。

碰撞體

碰撞體是另一種必須與剛體一起添加才會實現(xiàn)碰撞的組件。如果兩個剛體相互碰撞,只有兩個對象都附加了碰撞體時,物理引擎才會計算碰撞。在物理模擬過程中,無碰撞體的剛體將直接相互穿過對方。

碰撞體定義剛體的物理邊界

可通過?Component > Physics?菜單添加碰撞體。請查看單個碰撞體的組件參考頁面以獲取更多具體信息:

  • 盒型碰撞體?- 立方體的原始形狀

  • 球形碰撞體?- 球體的原始形狀

  • 膠囊碰撞體?- 膠囊體的原始形狀

  • 網(wǎng)格碰撞體?- 根據(jù)對象網(wǎng)格創(chuàng)建碰撞體,不能與另一個網(wǎng)格碰撞體碰撞

  • 車輪碰撞體?- 專門用于創(chuàng)建汽車或其他移動車輛

  • 地形碰撞體?- 處理與 Unity 地形系統(tǒng)的碰撞

復合碰撞體

復合碰撞體是原始碰撞體的組合,共同作為單個剛體。如果模型在性能方面過于復雜或成本過高而無法精確模擬,因此希望使用簡單的近似值以最佳方式模擬形狀的碰撞,復合碰撞體將派上用場。要創(chuàng)建復合碰撞體,請創(chuàng)建碰撞對象的子對象,然后將碰撞體組件添加到每個子對象。這樣就能輕松獨立定位、旋轉(zhuǎn)和縮放每個碰撞體??梢酝ㄟ^許多原始碰撞體和/或凸面網(wǎng)格碰撞體構(gòu)建復合碰撞體。

真實復合碰撞體設置

在上圖中,游戲?qū)ο?Gun Model?附加了一個剛體,使用多個原始碰撞體作為子游戲?qū)ο蟆.攧傮w父對象由于受力而移動時,子碰撞體會隨之移動。原始碰撞體將與環(huán)境的網(wǎng)格碰撞體碰撞,而父剛體將根據(jù)所受的力以及其子碰撞體與場景中其他碰撞體的交互方式來改變自己的移動方式。

網(wǎng)格碰撞體通常不能相互碰撞。如果網(wǎng)格碰撞體被標記為__凸面體 (Convex)__,則可與另一個網(wǎng)格碰撞體發(fā)生碰撞。典型的解決方案是對所有移動的對象使用原始碰撞體,而對靜態(tài)背景對象使用網(wǎng)格碰撞體。

__注意:__使用碰撞回調(diào)時,復合碰撞體會為每個碰撞體碰撞對返回單獨的回調(diào)。

連續(xù)碰撞檢測

連續(xù)碰撞檢測是一種阻止快速移動的碰撞體相互穿過的功能。使用正常 (Discrete) 碰撞檢測時,如果對象在一個幀中位于某個碰撞體的一側(cè),而在下一幀中已經(jīng)穿過了碰撞體,便屬于彼此穿過的情況。要解決此問題,可在快速移動對象的剛體上啟用連續(xù)碰撞檢測。將碰撞檢測模式設置為?Continuous?可防止剛體穿過任何靜態(tài)(即非剛體)網(wǎng)格碰撞體。設置為?Continuous Dynamic?也會防止剛體穿過任何其他支持的剛體(即,碰撞檢測模式設置為?Continuous?或?Continuous Dynamic?的剛體)。 盒型碰撞體、球形碰撞體和膠囊碰撞體支持連續(xù)碰撞檢測。請注意,連續(xù)碰撞檢測的目的是作為一種安全機制,可在對象會相互穿過的情況下捕獲碰撞,但不會提供精確物理碰撞的結(jié)果;所以如果遇到快速移動對象的問題,仍然可以考慮在 TimeManager 檢視面板中降低固定時間步長值以使模擬更準確。

使用合適的大小

游戲?qū)ο缶W(wǎng)格的大小比剛體的質(zhì)量重要得多。如果發(fā)現(xiàn)剛體的行為與預期不符,比如:移動緩慢、漂浮或碰撞方式不正確,請考慮調(diào)整網(wǎng)格資源的縮放比例。Unity 的默認單位比例為 1 個單位等于 1 米,因此會維持導入網(wǎng)格的比例并應用于物理計算。例如,搖搖欲墜的摩天大樓在坍塌時與由玩具積木制成的塔樓完全不同,因此不同大小的對象應按照精確比例建模。

如果要對人類進行建模,請確保該模型在 Unity 中的高度約為 2 米。要檢查對象是否具有適當?shù)拇笮?,請將其與默認立方體進行比較??梢允褂?GameObject > 3D Object > Cube?來創(chuàng)建立方體。立方體的高度恰好是 1 米,所以人的高度應該是其兩倍。

如果無法調(diào)整網(wǎng)格本身,可以更改特定網(wǎng)格資源的統(tǒng)一比例,操作方法是在?Project 視圖__中選擇該網(wǎng)格資源,然后從菜單中選擇?Assets > Import Settings…__。在此處,可以更改比例并重新導入網(wǎng)格。

如果游戲需要在不同比例下實例化游戲?qū)ο螅瑒t可以調(diào)整變換的縮放軸的值。缺點是物理模擬必須在對象實例化時執(zhí)行更多工作,并且可能導致游戲時性能下降。這倒不是可怕的損失,但此方法不如使用其他兩個選項來最終確定比例那么高效。另外請注意,使用父子化 (Parenting) 時,不統(tǒng)一的比例會產(chǎn)生意外行為。出于這些原因,最好在建模應用程序中以正確的比例創(chuàng)建對象。

提示

  • 兩個剛體的相對__質(zhì)量__決定了它們相互碰撞時的反應情況。

  • 使一個剛體具有比另一個剛體更大的__質(zhì)量__并不會使其在自由落體時降落得更快。要實現(xiàn)這一目的,請使用?Drag。

  • 較低的?Drag?值會讓對象看起來較重。較高的值會使其看起來較輕。Drag?的典型值為 .001(實心金屬塊)到 10(羽毛)之間。

  • 如果要直接操作對象的變換組件,但仍希望獲得物理效果,請附加剛體并將其設為 Kinematic。

  • 如果要通過變換組件移動游戲?qū)ο?,但希望接?Collision/Trigger 消息,必須將剛體附加到正在移動的對象。

  • 如果直接將對象的 Angular Drag 屬性設置為無窮大,無法使對象停止旋轉(zhuǎn)。


Unity-剛體的評論 (共 條)

分享到微博請遵守國家法律
巴林左旗| 红河县| 隆安县| 修武县| 巴东县| 武平县| 文昌市| 青岛市| 平邑县| 沙河市| 盐源县| 浦城县| 得荣县| 家居| 上林县| 瓦房店市| 昌宁县| 静安区| 保德县| 大埔县| 久治县| 广元市| 正定县| 平乐县| 阆中市| 沐川县| 临江市| 白山市| 吴旗县| 托克逊县| 津市市| 新巴尔虎右旗| 龙口市| 昌江| 威信县| 忻城县| 溆浦县| 湖南省| 金溪县| 富顺县| 贺兰县|