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