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