溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Unity3D腳印7——物理

發(fā)布時(shí)間:2020-07-28 18:57:26 來(lái)源:網(wǎng)絡(luò) 閱讀:441 作者:wyb10a10 欄目:游戲開發(fā)

Unity3D使用的是Physx物理引擎,但這里的用法跟純粹的Physx不一樣,這里是由剛體和碰撞體兩種組件組成的物理對(duì)象。

 

【剛體】

 

    RigidBody 用于物理模擬,有質(zhì)量,受重力影響,可以和其他可碰撞對(duì)象在碰撞的過(guò)程中發(fā)生相互作用的力,不要在運(yùn)動(dòng)中直接操作它們的位置(你要知道這不合物理),要通過(guò)施加力的方式來(lái)操作它,或者使用Joint

 

剛體的腳本API:http://game.ceeger.com/Script/Rigidbody/Rigidbody.html

 

Tips:

兩個(gè)剛體的相對(duì)質(zhì)量Mass決定它們之間碰撞之后的表現(xiàn)

阻力Drag越大,物體看起來(lái)越輕

 

【碰撞器】

 

    Collider 用于碰撞檢測(cè),包含物理材質(zhì),剛體的碰撞檢測(cè)是基于碰撞器的,一個(gè)對(duì)象必須有碰撞器,它的剛體才有效果,而一個(gè)沒(méi)有剛體的碰撞器,就是物理世界中的一個(gè)靜態(tài)對(duì)象,例如地板和樓房這些不會(huì)運(yùn)動(dòng)的物體,但能作用于其他剛體,逐幀移動(dòng)一個(gè)靜態(tài)碰撞器將重置Physt引擎,極耗資源

 

碰撞器的腳本API:http://game.ceeger.com/Script/Collider/Collider.html

 

【運(yùn)動(dòng)學(xué)剛體】

 

    Kinematic Rigidbodies isKinematic屬性為true的物體,不受力,重力,扭力的影響,但可以影響其他非運(yùn)動(dòng)學(xué)剛體,也可以直接設(shè)置它的位置,無(wú)敵模式,只有我可以打別人,別人不可以打我

 

【角色控制器】

 

    Character Controllers 一個(gè)垂直膠囊形狀的碰撞體,用于模擬類似人的控制器,它不受力的影響,但可以被代碼施加的力推動(dòng),通常,所有類似人的角色都用角色控制器來(lái)執(zhí)行,角色控制器本身不具備物理特性,如果要應(yīng)用真正的物理特性,必須使用剛體。

 

角色控制器API: http://game.ceeger.com/Script/CharacterController/CharacterController.html

 

 

【關(guān)于碰撞和觸發(fā)的回調(diào)函數(shù)】

 

OnTriggerXXX和OnCollisionXXX回調(diào),這系列的回調(diào)函數(shù)都是在發(fā)生碰撞的時(shí)候回調(diào)的,都包含了Enter,Exit和Stay三種狀態(tài),但觸發(fā)的規(guī)則以及傳入的參數(shù)不一樣

 

OnTrigger系列是當(dāng)碰撞體Collider和Trigger(自身的碰撞體)發(fā)生作用時(shí)調(diào)用的,當(dāng)碰撞體的isTrigger屬性為true時(shí)才會(huì)發(fā)送,但當(dāng)它為true時(shí),原先的碰撞屬性消失。這系列回調(diào)是由Collider發(fā)出的,碰撞對(duì)象將作為Collider被傳入(可以通過(guò)collider.gameObject來(lái)操作這個(gè)gameObject,它繼承于Component,Component包含了非常多的組件對(duì)象

 

OnCollision系列是當(dāng)剛體直接發(fā)生碰撞的時(shí)候回調(diào)的,是由剛體發(fā)出的,它傳入的對(duì)象是Collision,它包含更加詳細(xì)的信息,接觸點(diǎn),碰撞速度等等,OnCollision要求兩個(gè)對(duì)象都是剛體+碰撞體,傳入?yún)?shù)是可選的,非動(dòng)力學(xué)剛體發(fā)生的碰撞僅發(fā)送碰撞事件,而不發(fā)送Collision

 

【菜鳥使用物理引擎】

 

1.創(chuàng)建一個(gè)游戲?qū)ο?/p>

2.添加剛體

3.添加物理材質(zhì)(需導(dǎo)入Asset,導(dǎo)入方法如下所示)


Unity3D腳印7——物理 

腳本調(diào)用物理引擎

 

要使對(duì)象受物理引擎控制,簡(jiǎn)單的辦法就是給它加個(gè) Rigidbody 。當(dāng)你這么干了,對(duì)象就會(huì)受到重力影響,而且會(huì)和世界中的其他對(duì)象碰撞

剛體是模擬物理效果的對(duì)象。剛體用在玩家可以四處推動(dòng)的東西,比如箱子或者沒(méi)有固定的對(duì)象,或者,你可以直接用腳本添加力給對(duì)象來(lái)讓他四處移動(dòng)。

 

如果你直接移動(dòng)一個(gè)非運(yùn)動(dòng)學(xué)剛體的Transform,它和其他對(duì)象的碰撞可能出問(wèn)題。正確地方法應(yīng)該是通過(guò)施加力或者扭矩來(lái)移動(dòng)剛體。也可以添加Joints 來(lái)讓剛體的行為更加復(fù)雜。比如,你可以制作一扇逼真的門或者是一臺(tái)有擺動(dòng)鏈條的吊機(jī)。

 

剛體通常和原型碰撞器配合使用。

 

Tips: 提示

  • You should never have a parent and child rigidbody together 
    絕不要把父子剛體放在一起。(無(wú)法單獨(dú)控制)

  • You should never scale the parent of a rigidbody 
    絕不要縮放剛體的父對(duì)象。 

 

 

 

運(yùn)動(dòng)學(xué)剛體指的是激活了isKinematic屬性的剛體。運(yùn)動(dòng)學(xué)剛體不受力、重力或扭矩的影響。可以通過(guò)設(shè)置Transform 的position和rotation來(lái)準(zhǔn)確的操作它們或者讓它們動(dòng)起來(lái),但是,它們可以和其他的非運(yùn)動(dòng)學(xué)剛體互相作用。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI