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