一塔插、引言
物理引擎是一個很大的標(biāo)題,在這里拓哟,我只記錄一些我們較為常用的一些東西想许,其他的一些深入的東西,隨著我們的開發(fā)断序,會慢慢接觸到流纹,也會學(xué)習(xí)到,并且其中一些根本的東西也都是一樣的逢倍。
二捧颅、什么是物理引擎
物理引擎通過為剛性物體賦予真實的物理屬性的方式來計算運動、旋轉(zhuǎn)和碰撞反映较雕。
簡單地說碉哑,就像是什么是Unity引擎一樣,Unity是制作游戲的一款引擎亮蒋,而物理引擎則是用于制作物理效果的引擎扣典,也可以說是一種通用的方法。
三慎玖、碰撞器(Collider)
1.什么是碰撞器
碰撞器贮尖,根據(jù)名字我們就可以猜到,有了碰撞器趁怔,游戲物體就可以產(chǎn)生碰撞湿硝。沒錯薪前,碰撞器就是一個讓游戲物體可以產(chǎn)生碰撞效果的組件,它描述了物體可被碰撞的邊界关斜,以及碰撞過程中相互影響效果示括。我們可以在需要產(chǎn)生碰撞效果的游戲物體中添加碰撞器,使其能夠產(chǎn)生碰撞痢畜。
2.分類
根據(jù)形狀和效果分類:
- 盒碰撞器(Box Collider)?:
- 球碰撞器(Sphere Collider)?:
- 膠囊碰撞器(Capsule Collider)?:
- 車輪碰撞器(Wheel Collider):專用于車輪
- 網(wǎng)格碰撞器(Mesh Collider)
- 地形碰撞器(Terrain Collider)
- 復(fù)合碰撞器(Compound Colliders)
根據(jù)性能消耗分類(從低到高):
- Sphere Collider
- Capsure Collider
- Box Collider
- Mesh Collider
3.碰撞器主要參數(shù)
IsTrigger 是否作為觸發(fā)器使用(勾選后則沒有碰撞效果)
Material 使用的物理材質(zhì)
Center 碰撞器的坐標(biāo)
Size 碰撞器的大小
Edit Collider 手動調(diào)整碰撞器的大小
這里主要要說明的是IsTrigger垛膝,這個表示碰撞器碰撞是否為觸發(fā),丁稀,簡單解釋就是吼拥,碰撞了之后是否產(chǎn)生物理效果,如果勾選线衫,則表現(xiàn)為觸發(fā)凿可,也就是不產(chǎn)生物理效果,關(guān)于物理效果的產(chǎn)生授账,我們在記錄剛體的時候會進(jìn)行記錄矿酵。
4.物體發(fā)生碰撞的必要條件
- 碰撞雙方必須具有碰撞器,且(IsTrigger 為false)
- 運動一方必須具有剛體或者角色控制器
5.處理碰撞和觸發(fā)
學(xué)習(xí)了碰撞器矗积,我們知道物理引擎中我們可以使用它來讓游戲物體之間產(chǎn)生碰撞,那么我們要怎么才能自己處理碰撞呢敞咧,這里Unity給了我們幾個回調(diào)函數(shù);
- 當(dāng)碰撞發(fā)生時的回調(diào)函數(shù)
當(dāng)進(jìn)入碰撞
void OnCollisionEnter(Collision collision)
當(dāng)逗留碰撞
void OnCollisionStay(Collision collision)
當(dāng)退出碰撞
void OnCollisionExit(Collision collision)
Collision就是碰撞信息類棘捣,它可以獲取到是誰撞了我
回調(diào)函數(shù):就是你寫的一個函數(shù),放在那,不是由你寫的程序去調(diào)用而是系統(tǒng)自動調(diào)用你
的函數(shù),這就是回調(diào)函數(shù),回調(diào)函數(shù)即然是讓系統(tǒng)調(diào)用的,所以你就必須按系統(tǒng)給定的原
形來實現(xiàn)程序(簡單了解下就好了)
- 觸發(fā)器觸發(fā)時產(chǎn)生的回調(diào)函數(shù)
進(jìn)入觸發(fā)器
void OnTriggerEnter(Collider other)
當(dāng)逗留觸發(fā)器
void OnTriggerStay(Collider other);
退出觸發(fā)器
void OnTriggerExit(Collider other);
Other就是碰撞到當(dāng)前對象的游戲物體的碰撞器
四休建、剛體(Rigidbody)
1.什么是剛體
物理引擎通過為剛性物體賦予真實的物理屬性的方式來計算運動乍恐、旋轉(zhuǎn)和碰撞反映。這是百度給出的物理引擎解釋测砂,那么其中的剛性物體茵烈,在Unity中的體現(xiàn)就是剛體組件啦。
2.分類
- 普通剛體(影響自己也影響其他物體)
- 運動學(xué)剛體(Is Kinematic為 true, 自己不受物理引擎的驅(qū)動砌些,但是會影響其他剛體)
3.主要參數(shù)
Mass 質(zhì)量
Drag 位移阻力
Angular Drag 角阻力
Use Gravity 是否受重力影響
Is Kinematic 是否為運動學(xué)剛體
Interpolate 平滑物理運行的插值類型(枚舉)
Collision Detection 碰撞檢測方式(枚舉)
Constraits 凍結(jié)位置和旋轉(zhuǎn)
4.如何使剛體運動
判斷游戲物體是否產(chǎn)生位移呜投,只要看他的Transform組件的position是否變化即可(注意:但游戲物體為子類時,要看其最上層父類對象的Transform組件的position)存璃,所以都可以強(qiáng)制改變其Transform.position來改變仑荐,但我們這里講的是物理引擎,所以不記錄該方法纵东,只記錄使用剛體組件的方法粘招。
對于運動學(xué)剛體(Is Kinematic為True):
此類剛體不受物理引擎的印象,所以只能用剛體中的MovePosition(Vector3 v)來使其移動偎球。
對于非運動學(xué)剛體:
我們可以給剛體添加力洒扎,使用AddForce方法辑甜,或者給其一個速度來使其位移,賦值給velocity屬性袍冷。
這里記錄的是改變物體position的方法磷醋,還有一些改變物體rotation的方法,在這里就不進(jìn)行講解了难裆。
五子檀、結(jié)束語
寫了幾篇博客,發(fā)現(xiàn)有些東西乃戈,寫出來褂痰,理解更加深刻了,也讓自己的學(xué)習(xí)和記憶更加深刻症虑,以后要繼續(xù)堅持缩歪, 為了成為一個大牛。文章寫得比較粗糙谍憔,如有錯誤匪蝙,歡迎指正,也歡迎各路英雄互相研究學(xué)習(xí)习贫。