unity不规则碰撞_Unity中的刚体和碰撞器
剛體
剛體作為物理引擎中的最基本組件,保證了所有物體受到重力的約束。包含有該類(lèi)組件的游戲?qū)ο?#xff0c;會(huì)遵循萬(wàn)有引力定律,在重力的作用下,使物體垂直下落。剛體組件還會(huì)影響物體發(fā)生碰撞時(shí)的反應(yīng),使物體遵循慣性定律,并在其他物體運(yùn)動(dòng)沖擊作用下產(chǎn)生速度或者形變。
為了利于開(kāi)發(fā)者控制物理系統(tǒng),Unity提供了多個(gè)屬性接口。開(kāi)發(fā)者可以通過(guò)更改這些參數(shù)來(lái)控制物體的物理狀態(tài)。實(shí)際開(kāi)發(fā)中,這些參數(shù)都被詳細(xì)地羅列在屬性查看器中,開(kāi)發(fā)者很容易就可以對(duì)其進(jìn)行更改。接下來(lái)對(duì)這些屬性進(jìn)行介紹。
(1)質(zhì)量(Mass)
該屬性表示剛體的質(zhì)量,其數(shù)據(jù)類(lèi)型是float,默認(rèn)值為1。其在屬性查看器中的位置如圖6-1所示。該屬性的大小是有嚴(yán)格要求的,一般來(lái)說(shuō),大部分物體的質(zhì)量屬性值接近0.1才符合日常生活的感官感受,一旦超過(guò)10.0,就會(huì)失去仿真所需達(dá)到的效果。
(2)平移阻力(Drag)
該屬性是物體的平移阻力,其數(shù)據(jù)類(lèi)型是float,初始值為0。Drag屬性在屬性查看器中的位置如圖6-2所示。在現(xiàn)實(shí)生活中,物體會(huì)受到各方面的影響,速度會(huì)漸漸衰減,為了模擬這一效果,Unity設(shè)定了平移阻力屬性。這一屬性值越高,物體的速度衰減越嚴(yán)重。
(3)旋轉(zhuǎn)阻力(Angular Drag)
該屬性表示物體的旋轉(zhuǎn)阻力,其數(shù)據(jù)類(lèi)型是float,初始值為0.05。其在屬性查看器中的位置如圖6-3所示。當(dāng)一個(gè)物體進(jìn)行旋轉(zhuǎn)的時(shí)候,其旋轉(zhuǎn)的角速度也會(huì)受各方面影響衰減,為模擬這一現(xiàn)象,Unity設(shè)定了旋轉(zhuǎn)阻力屬性。此屬性值越高,物體的角速度衰減越嚴(yán)重。圖6-1 質(zhì)量
圖6-2 平移阻力
(4)使用重力(Use Gravity)
該屬性表示的是該物體是否受到重力的影響,其數(shù)據(jù)類(lèi)型是boolean,初始值為true。其在屬性查看器中的位置如圖6-4所示。這一屬性被設(shè)為false時(shí)可以模擬物體在外太空狀態(tài)下的失重狀態(tài)。有時(shí)候也可以根據(jù)需要用于某些特殊的場(chǎng)合。圖6-3 旋轉(zhuǎn)阻力
圖6-4 使用重力
當(dāng)該值被設(shè)定為false的時(shí)候,物體將不受重力影響,但剛體的其他特性還是存在的。
(5)是否遵循運(yùn)動(dòng)學(xué)(Is Kinematic)
該屬性表示本游戲?qū)ο笫欠褡裱nD運(yùn)動(dòng)學(xué)物理定律,其數(shù)據(jù)類(lèi)型是boolean,初始值為false。其在屬性查看器中的位置如圖6-5所示。如果該屬性被置為true,本物體的運(yùn)動(dòng)狀態(tài)將不受外力、碰撞和關(guān)節(jié)的影響,而只受到動(dòng)畫(huà)以及附加在物體上的腳本的影響。
另外,雖然當(dāng)該屬性被置為true時(shí)物體將不受物理定律的約束,但是該物體還是會(huì)影響其他的物體,改變其他物體的運(yùn)動(dòng)狀態(tài)。在游戲開(kāi)發(fā)中此屬性會(huì)被經(jīng)常用到,想象一下在第一人稱(chēng)射擊游戲中,敵人被擊殺后會(huì)倒地不動(dòng),因?yàn)檫@個(gè)敵人對(duì)象Rigidbody的Is Kinematic屬性被設(shè)置為了true。
(6)插值(Interpolate)
該屬性表示的是該物體運(yùn)動(dòng)的插值模式。其在屬性查看器中的位置如圖6-6所示。在默認(rèn)狀態(tài)下,插值Interpolate是被禁用的,可以選擇Interpolate模式,在此模式下物理引擎會(huì)在物體的運(yùn)動(dòng)幀之間進(jìn)行插值,使得運(yùn)動(dòng)更加自然。圖6-5 是否遵循運(yùn)動(dòng)學(xué)
圖6-6 插值
不得不提的是,插值導(dǎo)致了物理模擬和渲染的不同步,進(jìn)而產(chǎn)生物體輕微抖動(dòng)的現(xiàn)象。建議在開(kāi)發(fā)中,對(duì)主要角色使用插值,而其他的則禁用此功能,以達(dá)到折中效果。
(7)凍結(jié)旋轉(zhuǎn)(Freeze Rotation)
該屬性表示的是該物體的旋轉(zhuǎn)是否受到物理定律的約束。其在屬性查看器中的位置如圖6-7所示。默認(rèn)狀態(tài)下任意軸的旋轉(zhuǎn)是受物理定律控制的。該屬性的值是修改在每個(gè)軸上的旋轉(zhuǎn)屬性來(lái)實(shí)現(xiàn)的,實(shí)際開(kāi)發(fā)中可以靈活地使用。
在第一人稱(chēng)射擊游戲中,通過(guò)此屬性去除物理屬性對(duì)旋轉(zhuǎn)的控制,可以使玩家完全控制視角旋轉(zhuǎn)。
(8)碰撞檢測(cè)模式(Collision Detection)
該屬性表示的是碰撞檢測(cè)模式。其在屬性查看器中的位置如圖6-8所示。默認(rèn)狀態(tài)下,碰撞檢測(cè)模式是Discrete 。在沒(méi)有碰撞檢測(cè)的情況下,碰撞物體會(huì)穿過(guò)對(duì)方,產(chǎn)生所謂的“穿透”現(xiàn)象。為避免此類(lèi)問(wèn)題的發(fā)生,碰撞檢測(cè)工作是必須做的。圖6-7 凍結(jié)旋轉(zhuǎn)
圖6-8 碰撞檢測(cè)模式
關(guān)于碰撞模式的選擇,可選的有不連續(xù)模式(Discrete)、連續(xù)模式(Continuous)和動(dòng)態(tài)連續(xù)模式(ContinuousDynamic),其中動(dòng)態(tài)連續(xù)模式適用于高速運(yùn)動(dòng)的物體,但是耗費(fèi)資源較大。連續(xù)模式僅僅可以用于球體、膠囊和盒子碰撞者的剛體,而且會(huì)嚴(yán)重影響物體的運(yùn)動(dòng)表現(xiàn)。所以大部分的物體采用不連續(xù)模式作為碰撞檢測(cè)模式。
碰撞器
碰撞器是Unity內(nèi)建物理引擎中另外一個(gè)很重要的概念。弄清楚碰撞器的概念對(duì)于Unity開(kāi)發(fā)新手來(lái)說(shuō)是很重要的。
Unity中內(nèi)建的碰撞器主要包括6種,具體情況如下所述。
盒子碰撞器——BoxCollider
盒子碰撞器是一個(gè)基本的方形碰撞器原型,可以被調(diào)整成不同大小的長(zhǎng)方體,能夠很好地用于門(mén)、墻、平臺(tái)等,也能夠用于角色的軀干或者車(chē)輛等交通工具的外殼。
一般地,盒子碰撞器都是用于較規(guī)則的物體上,恰好將所作用的對(duì)象的主要部分包裹住。因此,適當(dāng)?shù)氖褂迷撆鲎财骺梢詼p少物理計(jì)算,提高性能。
球體碰撞器——SphereCollider
球體碰撞器是一個(gè)基本的球形碰撞器原型,在三維上可以均等地調(diào)節(jié)大小,但不能只改變某一維。適合用于落石、乒乓球、彈球等。
膠囊碰撞器——CapsuleCollider
膠囊碰撞器由一個(gè)圓柱體連接兩個(gè)半球體組成,是一個(gè)膠囊狀碰撞器原型。膠囊碰撞器的半徑和高度都可以單獨(dú)調(diào)節(jié)。可用于角色控制器或者和其他碰撞器結(jié)合用于不規(guī)則的形狀。
網(wǎng)格碰撞器——MeshCollider
網(wǎng)格碰撞器利用一個(gè)網(wǎng)格資源并在其上構(gòu)建碰撞器。對(duì)于復(fù)雜網(wǎng)狀模型上的碰撞檢測(cè),它要比應(yīng)用原型碰撞器精確的多。其通過(guò)附加在游戲?qū)ο笊系木W(wǎng)格構(gòu)建碰撞效果,并嚴(yán)格按照所附加對(duì)象的Transform屬性來(lái)設(shè)定其位置和大小比例。
車(chē)輪碰撞器——WheelCollider
車(chē)輪碰撞器是一個(gè)特殊的地面車(chē)輛碰撞器。其具有內(nèi)置的碰撞檢測(cè)、車(chē)輪物理引擎和一個(gè)基于滑動(dòng)的輪胎摩擦模型。當(dāng)然,也可以用于其他對(duì)象,但其是專(zhuān)門(mén)為有輪子的車(chē)輛設(shè)計(jì)的。車(chē)輪的碰撞檢測(cè)是通過(guò)自身中心向外投射一條y軸方向的射線(xiàn)來(lái)實(shí)現(xiàn)的。
地形碰撞器——TerrianCollider
地形碰撞器主要作用于地形與其上的物體之間的碰撞,給地形加上地形碰撞器可以防止添加了剛體屬性的對(duì)象會(huì)無(wú)限的往下落。
說(shuō)明:實(shí)際開(kāi)發(fā)中,常常將多種碰撞器組合來(lái)使用,這樣可以保證碰撞的真實(shí)性。
摘自:《Unity 4 3D開(kāi)發(fā)實(shí)戰(zhàn)詳解》一書(shū)
作者: 吳亞峰 , 杜化美 , 張?jiān)孪?, 索依娜
出處: http://www.epubit.com.cn/book/onlinechapter/11067
總結(jié)
以上是生活随笔為你收集整理的unity不规则碰撞_Unity中的刚体和碰撞器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: getopt使用方法
- 下一篇: 博弈类题目总结