unity碰撞(zhuàng)檢測要點總結
1.[AddComponentMenu("MyGame/Player")] //在Component菜單中加入(rù)“MyGame/Player”選項
2.Time.deltaTime表示每幀的(de)經過時(shí)間(jiān),那些需要(yào)每幀做增減變動的數值都需要乘上Time.deltaTime
3.MonoBehaviour的派生類不能使用構造函數初始化
4.unity的遊戲體隻能使用(yòng)Instantiate函數實例化,不能使用(yòng)new
5.OnTriggerEnter函數觸發條件:首先兩個物體都要加碰撞體,被(bèi)碰撞的物體必須勾選(xuǎn)Is Trigger使其(qí)監測觸發(不要加剛體),負責碰撞的物體必須加上剛體來(lái)觸發被(bèi)碰撞物(wù)體(加上剛體(tǐ)才擁有了觸發別人的作用,不要勾選Is Trigger)。
或者負責碰撞的物體勾選(xuǎn)Is Trigger使其監測觸發(不要加剛體),然後被碰撞的物體加上剛體(tǐ)。(不(bú)要勾選Is Trigger)
7.OnCollisionEnter(碰撞(zhuàng)瞬間)函數和OnCollisionExit(離開)調用條件:
1.首先兩個物體都要加碰撞體,
且Is Trigger(因為勾選了(le)它,則碰撞失效)都必須勾掉
另外:剛體碰非剛體會(huì)碰撞(zhuàng)(這裏碰撞指的是調用碰撞函數),非剛體碰剛體不會碰撞(詳細來說就是:運動中的剛體碰非剛體,則會調用被撞物體和撞(zhuàng)物體的OnCollisionEnter係列函數)
OnCollisionStay(接觸)函數調用(yòng)條件:兩個滿足條件的物體挨著的時候(hòu)就會調用OnCollisionStay
8.Is Trigger和Is Kinematic屬性詳解
Is Trigger:選中(zhōng)Is Trigger開啟觸發(fā)器(觸發器的範(fàn)圍則是碰撞的範圍),則碰撞屬性失效了
Is Kinematic:選中Is Kinematic開啟運動學狀態(一(yī)切物體保持靜止(zhǐ)或保持勻速向(xiàng)前運動,除非有外(wài)力影響它的狀(zhuàng)態,這裏的運(yùn)動學(xué)狀態指的是勻速向前運動),如選中,該(gāi)物體不會受到(dào)外力,但是需要注(zhù)意的是碰撞還(hái)在(碰撞不屬於剛體組件,它是在碰撞體組件裏)
注(zhù):
1.角色控製器(即Character Controller)不(bú)發力不受力(lì)但是可以被由代碼施加的力推動,,如果加Rigidbody組件,則這兩個會衝突(這是(shì)unity中非自然的一部分)
2.運(yùn)動學剛體發力不受力
3.剛體發力且受力
4.有時(shí)候碰撞可以產生反作用力,比如角色控製器可以通過碰撞給一個運動中的(de)剛體反作用力
5.剛體靜止時,則會進入休眠狀態,休眠狀態中(zhōng)剛體屬性不生效,比(bǐ)如阻力,重力,摩擦力。如何(hé)激活剛(gāng)體使其喚醒:給它力,讓它平移等。(這是unity中非自然的一部分)
6.現實生活中,先(xiān)有往某個方(fāng)向的力才會有(yǒu)反方(fāng)向的阻力,而且一般情況下阻力比該(gāi)方向的力小,但在unity中,阻力是可以事先設置的(de),當阻力大於作用力時,物體(tǐ)會向阻力的方向運動,是(shì)不是很(hěn)反(fǎn)自然?(這是unity中非自然的一部分)
7. 如果兩(liǎng)個物(wù)體都不是剛體,都有碰撞體,結果穿透,都不會調用碰撞函數
8.物體1是動(dòng)力(lì)學剛體且有碰撞體(tǐ),物(wù)體2沒有剛(gāng)體有碰撞體,結(jié)果穿透(tòu),都不會調用碰撞(zhuàng)函數
9.物體1是動力(lì)學剛體且有碰撞體,物體2有剛體有碰撞體,結果碰了,調用碰撞函數(不同情況調用不同函數。比如速度不同,調用函數不同[比如速度過快會穿過去])
10.this.transform.parent = surface.transform;//改變該物體(this.transform)的父級,父物體為surface.transform處(chù)的物體
- 上一篇:UNITY3D 動(dòng)畫教程 - 學習Flappy Bird了解 2018/8/29
- 下一(yī)篇:Unity3d碰撞器與觸發器(qì)的區別 2018/8/7