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