版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章虛擬現(xiàn)實(shí)開(kāi)發(fā)工具4
Unity的軟件是一款非常優(yōu)秀的游戲引擎,其中一個(gè)原因就是Unity為開(kāi)發(fā)游戲提供了很大的便利,其中物理系統(tǒng)就是一個(gè)非常方便的工具,可以想象制作任何一款游戲,都離不開(kāi)物體之間的物理響應(yīng),從而使游戲?qū)ο蟊憩F(xiàn)出與現(xiàn)實(shí)相似的各種物理行為。Unity中內(nèi)置了兩種獨(dú)立的物理引擎,分別是3D物理引擎和2D物理引擎。這兩種物理引擎使用方法非常相似,只是使用的組件不一樣,Rigidbody和Rigidbody2D。5.4.3物理系統(tǒng)1.RigidBody(剛體)組件物體系統(tǒng)中的RigidBody組件為物體提供是物理屬性,組件Collider提供的物理輪廓,通常這兩個(gè)組件Collider組合使用,才能達(dá)到現(xiàn)實(shí)中物體的物理效果。Mass:質(zhì)量。Drag:阻力。AngularDrag:角阻力。UseGravity:使用重力。5.4.3物理系統(tǒng)IsKinemaic:是否開(kāi)啟動(dòng)力學(xué)。Interpolate:插值,用于控制剛體運(yùn)動(dòng)的抖動(dòng)情況,包含三個(gè)子項(xiàng)分別是None(沒(méi)有插值)、Interpolate(內(nèi)插值,基于前一幀的值來(lái)平滑)、Extrapolate(外插值,基于后一幀的值來(lái)平滑)。5.4.3物理系統(tǒng)CollisionDetection:碰撞檢測(cè)。包括四個(gè)子項(xiàng)Discrete(離線碰撞檢測(cè),用兩個(gè)速度較慢的對(duì)象的碰撞檢測(cè),消耗資源最低)Continuous(連續(xù)碰撞檢測(cè),適用于一個(gè)快速對(duì)象和較慢的對(duì)象的檢測(cè),消耗資源較低)ContinuousDynamic(連續(xù)動(dòng)態(tài)碰撞檢測(cè),適用于兩個(gè)快速的物體間的檢測(cè),消耗資源較高)Continuousspeculative(連續(xù)預(yù)判性檢測(cè))5.4.3物理系統(tǒng)Constraints:約束,用來(lái)控制物體對(duì)碰撞所產(chǎn)生的運(yùn)動(dòng)約束。FreezePosition:凍結(jié)位置,能禁止物體沿世界坐標(biāo)系的三個(gè)方向的位移。FreezeRotation:凍結(jié)旋轉(zhuǎn),能禁止物體沿世界坐標(biāo)系的三個(gè)方向的旋轉(zhuǎn)。5.4.3物理系統(tǒng)2.Collider組件Collider組件,俗稱碰撞器,碰撞器也分為兩類3D碰撞器和2D碰撞器。和剛體一樣,這兩種碰撞器都相似,以下我們只討論3D碰撞器。剛體可以讓物體在物理影響下運(yùn)動(dòng)。但是如果要讓兩個(gè)物體發(fā)生碰撞后的物理效果,就必須再為它們加上碰撞器,兩個(gè)對(duì)象有碰撞體時(shí)物理引擎才會(huì)計(jì)算碰撞,在物理模擬中,沒(méi)有碰撞體的剛體會(huì)彼此相互穿過(guò)。而物體能產(chǎn)生碰撞的輪廓就是由碰撞器提供的。
物體發(fā)生碰撞的必要條件:兩個(gè)物體都必須帶有碰撞器(Collider),其中一個(gè)物體還必須帶有Rigidbody剛體。5.4.3物理系統(tǒng)
在unity3d中,能檢測(cè)碰撞發(fā)生的方式有兩種,一種是利用碰撞器,另一種則是利用觸發(fā)器。
碰撞器是觸發(fā)器的載體,而觸發(fā)器只是碰撞器身上的一個(gè)屬性。
當(dāng)IsTrigger=false時(shí),碰撞器根據(jù)物理引擎引發(fā)碰撞,產(chǎn)生碰撞的效果,可以調(diào)用OnCollisionEnter/Stay/Exit方法;當(dāng)IsTrigger=true時(shí),碰撞器就變成了觸發(fā)器,沒(méi)有碰撞效果,可以調(diào)用OnTriggerEnter/Stay/Exit方法(關(guān)于這幾個(gè)方法的使用在之前的特有方法中有使用方法)。如果要檢測(cè)一個(gè)物體是否經(jīng)過(guò)空間中的某個(gè)區(qū)域這時(shí)就可以用到觸發(fā)器。5.4.3物理系統(tǒng)
(1)碰撞器的類型BoxCollider(盒子碰撞器);
SphereCollider(球形碰撞器);
CapsuleCollider(膠囊體碰撞器);
MeshCollider(網(wǎng)格碰撞器);
WheelCollider(車輪碰撞器);5.4.3物理系統(tǒng)
(2)其它物理組件物理系統(tǒng)所包含的組件很多,下面僅簡(jiǎn)單描述各個(gè)組件的名稱及作用,具體用法不在贅述。Cloth布料組件;HingeJoint鉸鏈關(guān)節(jié);FixedJoint固定關(guān)節(jié);SpringJoint彈簧關(guān)節(jié);CharacterJoint角色關(guān)節(jié);ConfigurableJoint;ConstantForce物理力場(chǎng);5.4.3物理系統(tǒng)剛體類中除了下面要講到的方法,還有很多屬性變量,這些變量在上面提到的面板中都有講過(guò),可以通過(guò)調(diào)取實(shí)例屬性的方式調(diào)取,此處不再贅述。(1)AddForce(),添加力。語(yǔ)法結(jié)構(gòu):publicvoidAddForce(Vector3force)所屬類:Rigidbody;方法解析:實(shí)例方法,需要用實(shí)例.的形式調(diào)用該方法。實(shí)現(xiàn)該Rigidbody實(shí)例添加一個(gè)力,力的方向沿著向量force的方向,力的大小為force的模。剛體類常用的代碼方法例子:Rigidbodyr=newRigidbody();//創(chuàng)建Rigidbody實(shí)例。r.AddForce(transform.forward);//給r添加一個(gè)沿自身前方向移動(dòng)的力,力的大小是1。以下實(shí)例統(tǒng)一用r表示Rigidbody類變量,用來(lái)存放Rigidbody實(shí)例,不再單獨(dú)定義。AddForce是重載方法,其他重載方法如下:publicvoidAddForce(Vector3force,ForceModemode);publicvoidAddForce(floatx,floaty,floatz);publicvoidAddForce(floatx,floaty,floatz,ForceModemode);x、y、z的參數(shù)是將向量force三個(gè)分量分別寫出來(lái)。剛體類常用的代碼方法(2)AddForceAtPosition(),添加點(diǎn)作用力。語(yǔ)法結(jié)構(gòu):publicvoidAddForceAtPosition(Vector3force,Vector3position)所屬類:Rigidbody;方法解析:實(shí)例方法,需要用實(shí)例.的形式調(diào)用該方法。實(shí)現(xiàn)該Rigidbody實(shí)例的一個(gè)位置點(diǎn)添加一個(gè)力,力的方向沿著參數(shù)向量force的方向,力的大小為force的模,position是力的作用點(diǎn)。例子:r.AddForceAtPosition(transform.forward,newVector3(1,1,1,));//給r添加一個(gè)沿自身前方向移動(dòng)的力,力的大小是1,作用點(diǎn)在坐標(biāo)1,1,1的位置。剛體類常用的代碼方法(3)AddExplosionForce(),添加爆炸力語(yǔ)法結(jié)構(gòu):publicvoidAddExplosionForce(floatexplosionForce, Vector3explosionPosition,floatexplosionRadius);方法解析:實(shí)例方法,需要用實(shí)例.的形式調(diào)用該方法。實(shí)現(xiàn)在世界坐標(biāo)下的產(chǎn)生一個(gè)力,力的位置參照explosionPosition,力的位置可以在物體輪廓之外,力的大小依照explosionForce,力的作用范圍半徑explosionRadius,方法內(nèi)部可以根據(jù)力的大小、位置、范圍計(jì)算力的對(duì)物體產(chǎn)生的影響。所屬類:Rigidbody;例子:r.AddExplosionForce(10,newVector3(1,1,1),20);//在世界坐標(biāo)系下1,1,1的點(diǎn)產(chǎn)生一個(gè)力,力的大小為10,力的作用范圍是20。剛體類常用的代碼方法(4)AddTorque(),添加扭矩。語(yǔ)法結(jié)構(gòu):publicvoidAddTorque(Vector3torque);所屬類:Rigidbody;方法解析:實(shí)例方法,需要用實(shí)例.的形式調(diào)用該方法。對(duì)實(shí)例對(duì)象添加一個(gè)扭矩,實(shí)例將以自身中心點(diǎn)為中心,參數(shù)torque方向?yàn)檩S向旋轉(zhuǎn),,旋轉(zhuǎn)速度為參數(shù)向量的模長(zhǎng)。例子:r.AddTorque(newVector3(1,1,1));//實(shí)例r以自身中心點(diǎn)為中心,向量1,1,1為方向?yàn)檩S旋轉(zhuǎn),旋轉(zhuǎn)速度為1,剛體類常用的代碼方法(5)SweepTest(),檢測(cè)第一個(gè)碰撞器。語(yǔ)法結(jié)構(gòu):publicboolSweepTest(Vector3direction,outRaycastHit hitInfo);所屬類:Rigidbody;方法解析:實(shí)例方法,需要用實(shí)例.的形式調(diào)用該方法。該方法用來(lái)檢測(cè)以實(shí)例中心為起點(diǎn),沿著參數(shù)Direction的方向上是否有碰撞器,該方法有返回值,返回一個(gè)bool值,true表示檢測(cè)到碰撞器,false表示沒(méi)有檢測(cè)到碰撞器。該方法中有一個(gè)outRaycastHithitInfo參數(shù),RaycastHit是一個(gè)射線碰撞信息類,用來(lái)保存射線碰撞物體所產(chǎn)生的信息,里面包含所碰到的物體,碰撞點(diǎn)的坐標(biāo)等。剛體類常用的代碼方法
關(guān)鍵字out的意思是可以在方法內(nèi)部對(duì)參數(shù)變量進(jìn)行更改,這么做的目的一般是因?yàn)槲覀冃枰粋€(gè)方法返回兩個(gè)有用的數(shù)據(jù),但是利用常規(guī)的return方法只能返回一個(gè)數(shù)據(jù),所以需要使用out來(lái)返回第二個(gè)返回值。例如當(dāng)前SweepTest方法,會(huì)返回一個(gè)是否碰撞到碰撞器的bool值,還會(huì)out出對(duì)應(yīng)的碰撞器的碰撞信息。該方法的檢測(cè)只檢測(cè)碰到的第一個(gè)碰撞器,檢測(cè)到第一個(gè),方法即結(jié)束。例子:r.SweepTest(transform.forward,outRaycastHithitInfo);//檢測(cè)實(shí)例r的前方向是否有碰撞器,如果有則返回true,并將產(chǎn)生的碰撞的信息存入變量hitInfo中,如果沒(méi)有則返回false。剛體類常用的代碼方法
(6)SweepTestAll(),檢測(cè)所有碰撞器語(yǔ)法結(jié)構(gòu):publicRaycastHit[]SweepTestAll(Vector3direction,out RaycastHithitInfo);所屬類:Rigidbody;方法解析:SweepTestAll方法和SweepTest方法類似,區(qū)別在于SweepTest只檢測(cè)碰到的第一個(gè)碰撞器,而SweepTestAll方法獲取碰撞的所有碰撞器。剛體類常用的代碼方法
物理管理器:在物理管理器中可以設(shè)置場(chǎng)景中所有物理效果的一些參數(shù),例如:重力加速度,反彈力等等。物理管理器所設(shè)置的是世界的物理屬性,剛體所設(shè)置的是物體自身的物理屬性。物理管理器通過(guò)Edit菜單→ProjectSettings→Physics找到。物理面列舉了部分參數(shù)的意思,通常這個(gè)面板最常用的是物理的重力效果。Gravity:重力,重力加速度。DefaultMaterial物理材質(zhì)用于調(diào)整摩擦力和碰撞單位之間的反彈效果。Bouncethreshold反彈值,速度小于這個(gè)值的時(shí)候,就不再反彈。Sleepthreshold休眠值,當(dāng)速度小于這個(gè)值,則靜止。4.物理管理器
Physics類是Unity中個(gè)處理物理相關(guān)功能的類,里面包含了全局物理屬性和輔助方法,該類下的方法和屬性都是靜態(tài),下面我們依次講解。(1)gravity,檢測(cè)所有碰撞器語(yǔ)法結(jié)構(gòu):publicstaticVector3gravity{get;set;}所屬類:Physics;方法解析:場(chǎng)景重力加速度。5.物理類常用的代碼方法(2)RayCast,射線碰撞檢測(cè)語(yǔ)法結(jié)構(gòu):publicstaticboolRaycast(Rayray,outRaycastHithitInfo);所屬類:Physics;方法解析:射線檢測(cè)。使用方法和RigidBody類下的SweepTest相似,方法會(huì)有一個(gè)返回值,如果射線碰到物體則返回true否則返回false,ray為是需要檢測(cè)的射線,hitInfo是碰撞信息,該方法有多個(gè)重載方法,maxDistance是射線長(zhǎng)度,layerMask層號(hào),通過(guò)這個(gè)內(nèi)容,可以對(duì)控制射線只對(duì)某一層進(jìn)行碰撞檢測(cè)。5.物理類常用的代碼方法(3)RaycastAll,射線碰撞檢測(cè)語(yǔ)法結(jié)構(gòu):publicstaticRaycastHit[]RaycastAll(Rayray);所屬類:Physics;方法解析:射線全部碰撞檢測(cè)。該方法和RigidBody類下的SweepTestAll相似,返回一個(gè)碰撞信息數(shù)組,將所有碰到的物體的碰撞信息都放到這個(gè)數(shù)組中。ray是需要檢測(cè)的射線,maxDistance是射線長(zhǎng)度,layerMask需要進(jìn)行碰撞檢測(cè)的層號(hào)。除了射線檢測(cè),還有LineCast線段檢測(cè),和射線方法基本相同,BoxCast盒子射線檢測(cè),和射線方法類似,不過(guò)發(fā)射出去的是一個(gè)Box的圖形,而不是一條線,SphereCast球形射線檢測(cè),CapsuleCast膠囊射線檢測(cè)。5.物理類常用的代碼方法(4)CheckSphere:檢測(cè)虛擬Sphere在世界空間坐標(biāo)系中是否和碰撞器重疊。語(yǔ)法結(jié)構(gòu):publicstaticboolCheckSphere(Vector3position,float radius);所屬類:Physics;方法解析:在空間中一點(diǎn)設(shè)置一個(gè)虛擬的球形碰撞器,檢測(cè)是否有物體與該球體發(fā)生碰撞,如果有,則返回true,否則返回false,postion為坐標(biāo),radius為半徑,layerMask是要進(jìn)行檢測(cè)的層級(jí)。同類的方法還有CheckBox、CheckCapsule5.物理類常用的代碼方法(5)OverlapSphere:返回球內(nèi)或與之接觸的所有碰撞器。語(yǔ)法結(jié)構(gòu):publicstaticCollider[]OverlapSphere(Vector3position, floatradius);所屬類:Physics;方法解析:在空間中一點(diǎn)設(shè)置一個(gè)虛擬的球形碰撞器,檢測(cè)是否有物體與該球體發(fā)生碰撞,將所有與之發(fā)生的碰撞的碰撞體存到一個(gè)數(shù)組中通過(guò)方法返回,postion為坐標(biāo),radius為半徑,layerMask是要進(jìn)行檢測(cè)的層級(jí)。同類的方法還有OverlapBox、OverlapCapsule5.物理類常用的代碼方法物理材質(zhì)是模擬物體的表面物理效果
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人機(jī)動(dòng)車抵押借款合同2024樣式版B版
- 2025年度新能源車輛設(shè)備租賃服務(wù)合同范本4篇
- 二零二五版新能源電站安全生產(chǎn)運(yùn)營(yíng)服務(wù)合同3篇
- 二零二五年度文化演出擔(dān)保期限與票務(wù)銷售協(xié)議4篇
- 二零二五年阿里巴巴電商店鋪全面托管與運(yùn)營(yíng)合同范本3篇
- 2025年度園林景觀樹(shù)木養(yǎng)護(hù)管理合同協(xié)議4篇
- 科技企業(yè)中的精細(xì)化飼料管理模式構(gòu)建
- 2025版美食廣場(chǎng)食品安全責(zé)任書4篇
- 2025年度磁性材料環(huán)保認(rèn)證與采購(gòu)合同3篇
- 二零二五版拆房工程噪音污染防治合同3篇
- (二統(tǒng))大理州2025屆高中畢業(yè)生第二次復(fù)習(xí)統(tǒng)一檢測(cè) 物理試卷(含答案)
- 口腔執(zhí)業(yè)醫(yī)師定期考核試題(資料)帶答案
- 2024人教版高中英語(yǔ)語(yǔ)境記單詞【語(yǔ)境記單詞】新人教版 選擇性必修第2冊(cè)
- 能源管理總結(jié)報(bào)告
- 充電樁巡查記錄表
- 阻燃材料的阻燃機(jī)理建模
- CJT 511-2017 鑄鐵檢查井蓋
- 配電工作組配電網(wǎng)集中型饋線自動(dòng)化技術(shù)規(guī)范編制說(shuō)明
- 2024高考物理全國(guó)乙卷押題含解析
- 介入科圍手術(shù)期護(hù)理
- 青光眼術(shù)后護(hù)理課件
評(píng)論
0/150
提交評(píng)論