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

    unity碰撞檢測要點總結

    2018/8/7      點擊:

    1.[AddComponentMenu("MyGame/Player")] //在Component菜單(dān)中加入“MyGame/Player”選項
    2.Time.deltaTime表(biǎo)示每幀的經過時(shí)間,那(nà)些需要每幀做增減(jiǎn)變動(dòng)的數值(zhí)都需要乘上Time.deltaTime
    3.MonoBehaviour的(de)派生類不(bú)能使用(yòng)構造函數初始化(huà)
    4.unity的遊戲體隻能使用Instantiate函數實例化,不能使(shǐ)用(yòng)new
    5.OnTriggerEnter函數觸發條件:首先兩個物體都要加碰撞體,被碰撞的(de)物體必須勾選Is Trigger使其監測觸發(不要加剛體),負(fù)責碰撞的物體必須加上剛體來觸發被碰撞物體(加上剛體才擁(yōng)有了觸發別人的作(zuò)用,不要勾(gōu)選Is Trigger)。
    或者負責碰撞的物體勾選Is Trigger使其監測觸(chù)發(不要加剛體(tǐ)),然後被碰(pèng)撞的物體加(jiā)上剛體(tǐ)。(不要勾選Is Trigger)
    7.OnCollisionEnter(碰撞瞬間(jiān))函數和OnCollisionExit(離開(kāi))調用條件:
    1.首先兩個物體都要加碰撞體,
    且Is Trigger(因為勾選了它,則碰撞失效)都必(bì)須(xū)勾掉
    另外(wài):剛體碰非剛體會碰撞(這裏碰(pèng)撞指的是調用碰(pèng)撞函數(shù)),非剛體(tǐ)碰剛體(tǐ)不(bú)會碰撞(詳細來說就是:運動中的剛體碰非剛(gāng)體,則會(huì)調用被撞物體和撞物體的OnCollisionEnter係列函數)
    OnCollisionStay(接觸)函數調用(yòng)條件:兩(liǎng)個滿(mǎn)足條件的物體挨(āi)著的時候就會調用OnCollisionStay
    8.Is Trigger和Is Kinematic屬性詳解
    Is Trigger:選中Is Trigger開啟觸發器(觸發器的範圍則是碰撞的範圍),則碰撞屬性失效了
    Is Kinematic:選中Is Kinematic開啟運動學狀態(一切物體保持靜止或保持勻速向前運動,除非有外力影響它(tā)的狀態,這裏(lǐ)的運動學狀態指的是勻速向前(qián)運動),如選中,該物體(tǐ)不會受到外力,但是需要注意的是碰撞還在(碰撞不屬於剛體組件(jiàn),它是在碰撞體組件裏)
    注:

    1.角(jiǎo)色控製器(即(jí)Character Controller)不(bú)發力不受(shòu)力但是可以被由代碼施加的力(lì)推動,,如果加Rigidbody組件,則(zé)這兩個會衝突(這(zhè)是(shì)unity中(zhōng)非自然(rán)的一部分)
    2.運動學剛體發力不受力
    3.剛體發力且受力
    4.有時候碰撞可以產生反作用力,比如角色控製器可以通過碰撞給一(yī)個運動中的剛體反(fǎn)作用力
    5.剛體靜止時,則會進入休眠(mián)狀態,休眠狀態中剛體屬性(xìng)不生效,比如阻力,重力,摩擦力。如何激活剛體使其喚醒:給它力,讓它平移等。(這是unity中非自然的一部分)
    6.現實生活中,先有(yǒu)往某個方向的力才會有反方向的阻力,而且一般情況下(xià)阻力比該方向的力小,但在unity中,阻力是可以事先設置的,當阻力大於(yú)作用力時,物(wù)體會向阻力的方向運動,是不是(shì)很反自然?(這是unity中非自然的一部分(fèn))
    7. 如果兩個物體都(dōu)不是剛體,都有碰撞體,結果穿透,都不會調用碰撞函數
    8.物體1是動力(lì)學剛體且有碰撞體,物體2沒有剛體有碰撞體,結果穿透,都不會調用(yòng)碰撞函數
    9.物體1是動力學剛(gāng)體且有碰撞體,物體2有剛體有(yǒu)碰撞體,結果碰了,調用碰撞函數(不(bú)同情況調用不同函數。比如速度不同,調用函數不同[比如速度過快會穿過去])
    10.this.transform.parent = surface.transform;//改變該物體(this.transform)的父級,父物體為surface.transform處的物體


    91网站入口_91视频导航_91短视频在线_91视频在线免费观看