• 您的位置:首頁 > 新聞動態 > Unity3D

    unity的碰撞檢測詳(xiáng)細解釋(shì)

    2018/3/5      點(diǎn)擊:
    1.[AddComponentMenu("MyGame/Player")] //在Component菜單中加入“MyGame/Player”選項
    2.Time.deltaTime表示每幀的經過(guò)時間,那些需要每幀做增減(jiǎn)變動的數值都需要乘上(shàng)Time.deltaTime
    3.MonoBehaviour的派生類不能使用構造函數初始化
    4.unity的遊戲體隻能使用(yòng)Instantiate函數實例化,不能使用new
    5.OnTriggerEnter函數觸(chù)發條件:首先兩個物體都要加碰撞體,被碰撞的物(wù)體(tǐ)必須勾選Is Trigger使其監測觸發(不要加剛體),負責碰撞的(de)物體必須加上剛體來觸發被碰撞物體(加上剛體才擁(yōng)有了觸發別人的作用,不要勾選Is Trigger)。
    或者負責碰撞的物體(tǐ)勾選Is Trigger使其監測(cè)觸發(不要加剛(gāng)體),然後被碰撞的物體加上剛體。(不要勾選Is Trigger)


    6.OnCollisionEnter(碰撞瞬間)函數和OnCollisionExit(離開)調用條件:首先兩個物體都要加碰(pèng)撞體,且Is Trigger(因為勾選了它,則碰撞失效)都必須勾掉,另外:剛體碰非剛體會碰撞(這裏碰撞指的是調用碰撞函數),非剛體碰剛體不會碰撞(zhuàng)(詳細來說就(jiù)是:運動中的剛體碰非剛體,則會調用被撞物體和撞物(wù)體的OnCollisionEnter係列函數),OnCollisionStay(接(jiē)觸)函(hán)數調用(yòng)條件:兩個(gè)滿足條(tiáo)件(jiàn)的(de)物體(tǐ)挨著的時候就(jiù)會調用OnCollisionStay
    7.Is Trigger和Is Kinematic屬性詳解
    Is Trigger:選中Is Trigger開啟(qǐ)觸(chù)發器(觸發器的範圍則是碰撞的範(fàn)圍),則碰撞屬性(xìng)失(shī)效了
    Is Kinematic:選中Is Kinematic開啟運動學狀態(一切物體保(bǎo)持靜(jìng)止或保持勻速向(xiàng)前運動,除非有外力影響它的狀態,這裏的運動學狀態(tài)指的是勻速向前運動,牛頓大俠的理論)。如(rú)選中,該物體不會受到外力,但是需要(yào)注意的是碰撞還在(碰撞(zhuàng)不屬於剛體組件,它(tā)是在碰(pèng)撞體組件裏)
    注:1.角控(kòng)製器(即Character Controller)不發(fā)力不受力(lì)但是可以被由代碼施加的力推動,,如果加Rigidbody組件(jiàn),則這兩個會(huì)衝突(這是unity中非自然的一部分)
    2.運動學剛體發力不受力
    3.剛(gāng)體發力且受力
    4.有(yǒu)時候碰撞可(kě)以產生反作(zuò)用力(lì),比如角控製器可以通過碰撞給一個運動中的剛體反作用力
    5.剛體靜止時,則會進入休眠狀態,休眠狀態中剛體屬性不生效,比如阻力,重力,摩擦力。如(rú)何(hé)激活剛體使其喚醒:給它(tā)力,讓它平移等。(這是unity中非自(zì)然的一(yī)部分)
    6.現實生活中(zhōng),先有往某個方向的力才會有反方向的阻力,而且一(yī)般(bān)情況(kuàng)下阻力比(bǐ)該方向的力小(xiǎo),但在unity中,阻(zǔ)力是可以事先設置的,當阻力大(dà)於作用力時,物體會向阻力(lì)的方向運動,是不是很反自然?(這是unity中非自然的一部分)
    7. 如果兩個(gè)物體都不是(shì)剛體,都有碰撞體,結果穿透,都不會調用碰撞函數
    8.物體1是動力學剛體且有碰撞體,物體2沒有剛體有碰(pèng)撞體,結(jié)果穿透(tòu),都不會調用碰撞函數
    9.物體1是動力學剛體且有碰撞體,物體2有剛體有碰撞體,結果碰了,調用碰撞(zhuàng)函數(不同情況調用不同函數。比如速度不同,調用函數不同[比如速度過快會穿過去])

    表(biǎo)格:(針對於OnCollisionEnter係列(liè)函數,默認都有(yǒu)碰撞(zhuàng)體,重力都(dōu)取(qǔ)消了,表格列出的現象可能片麵)


    Cube

    Sphere

    現象

    剛體

    剛體

    動(dòng)力學

    運動狀態

    剛體

    剛體(tǐ)

    動力學(xué)

    運動狀態

    有(yǒu)

    互相穿透不幹擾(rǎo)

    互相穿透不幹擾

    碰撞檢測,且Cube不會被(bèi)撞開

    有(yǒu)

    碰撞(zhuàng)檢測,且(qiě)Cube不會被撞開

    互相穿(chuān)透不幹擾

    互相穿透不幹擾

    有(yǒu)

    碰(pèng)撞檢(jiǎn)測,且Sphere不會被(bèi)撞開

    碰(pèng)撞檢測,且相互撞(zhuàng)開

    碰撞檢測,且Sphere隨Cube動(dòng)

    碰(pèng)撞檢測,且Sphere不會被撞開(kāi)

    有(yǒu)

    碰撞檢測,且Sphere不會被(bèi)撞開(kāi)

    碰撞檢測,且Cube不會被撞開

    嵌入時,碰撞檢測,且Cube不會(huì)被撞開

    有(yǒu)

    互相(xiàng)穿(chuān)透不幹擾

    有(yǒu)

    嵌入時,互不幹擾

    嵌入時,碰撞檢(jiǎn)測,互相撞開

    碰撞檢測,且Cube隨Sphere動

    嵌入時,碰撞檢測,Sphere不會被撞開

    互相穿透不幹擾

    互相穿透不幹擾

    互相穿(chuān)透不幹擾


    8.this.transform.parent = surface.transform; //改變(biàn)該物體(this.transform)的父級,父物體為surface.transform處的(de)物體


    网站地图 正能量网-传播正能量弘扬主旋律-免费正能量网站www正能量-免费正能量网站www正能量下载在线观看官网