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