国产成人亚洲综合色婷婷,漂亮人妻沦陷精油按摩,野花日本高清完整版免费观看视频,狠狠躁夜夜躁人人爽天天,久久av无码精品人妻出轨

  • Unity3d Rigidbody 碰撞穿透

    2018/4/25??????點(diǎn)擊:

    首先,說(shuō)說(shuō)碰撞的條件:1.rigidbody(剛體),一般用在主動(dòng)移動(dòng)的物體上,比如角色。2.collider,碰撞器,一般用于受力物體上,比如障礙塊。

    物理的碰撞當(dāng)然是基于物理檢測(cè)計(jì)算,而這個(gè)計(jì)算是消耗cpu和gpu的,那么,碰撞穿透是什么鬼?

    發(fā)生概率即觸發(fā)方式:

    1.剛體速度足夠快,被撞物體的collider足夠薄。

    2.剛體速度在一定的v,被撞物體也在一定的速度v(被撞物體可移動(dòng))。

    3.暫時(shí)未發(fā)現(xiàn)的其他情況。

    在分析這兩種(3種)情況之前,先了解下一個(gè)剛體(rigidbody)屬性參數(shù):Collision Detection(碰撞檢測(cè)):

    它有三種選項(xiàng):Discrete(離散),Continuous(連續(xù)),Continuous Dynamic(動(dòng)態(tài)連續(xù)),我們參考下官方的解釋?zhuān)?

    該屬性用于控制避免高速運(yùn)動(dòng)的游戲?qū)ο蟠┻^(guò)其他的對(duì)象而未發(fā)生碰撞,有三項(xiàng)可供選擇
    Discrete:離散碰撞器。該模式與場(chǎng)景中其他的所有碰撞體進(jìn)行碰撞檢測(cè)。該項(xiàng)為默認(rèn)值。
    Continuous:連續(xù)碰撞檢測(cè)。該模式用于檢測(cè)與動(dòng)態(tài)碰撞體(帶有Rididbody)的碰撞,使用連續(xù)碰撞檢測(cè)模式來(lái)檢測(cè)與網(wǎng)格碰撞體(不帶ridigbody)碰撞。(添加一句原文翻譯漏了),Rigidbody設(shè)置為連續(xù)動(dòng)態(tài)碰撞檢測(cè)模式將使用連續(xù)碰撞來(lái)檢測(cè)。其他剛體會(huì)采用離散碰撞模式。此模式適用于那些需要與采用連續(xù)動(dòng)態(tài)檢測(cè)的對(duì)象相碰撞的對(duì)象。這對(duì)物理性能會(huì)有很大影響,如果不需要對(duì)快速運(yùn)動(dòng)對(duì)象進(jìn)行碰撞檢測(cè),就使用離散碰撞檢測(cè)模式。
    Continuous Dynamic:連續(xù)動(dòng)態(tài)碰撞檢測(cè)模式,該模式用于檢測(cè)與采用連續(xù)碰撞撞模式或連續(xù)
    動(dòng)態(tài)碰撞模式對(duì)象的碰撞,也可用于檢測(cè)沒(méi)有rigidbody的靜態(tài)網(wǎng)格碰撞體。對(duì)于與之碰撞的其他對(duì)象可采用離散碰撞檢測(cè)。動(dòng)態(tài)連續(xù)碰撞檢測(cè)模式也可用于檢測(cè)快速運(yùn)動(dòng)的游戲物體。
    翻譯就是這樣的理解并不難:后面兩項(xiàng)就是為了用來(lái)能夠檢測(cè)到快速運(yùn)動(dòng)的物體不至于
    你的void OnCollisionEnter(Collision hit)函數(shù)檢測(cè)不到,而至于一個(gè)為Continuous Dynamic的剛體和一個(gè)Discrete的剛體碰撞,前者會(huì)使用使用Continous(連續(xù))碰撞,后
    者離散碰撞

    再來(lái)總結(jié)下:當(dāng)使用默認(rèn)的離散式碰撞檢測(cè)時(shí),如果前一楨時(shí)對(duì)象在墻這一面,下一楨時(shí)對(duì)象已到到了墻另一面,那么碰撞檢測(cè)算法將檢測(cè)不到碰撞的發(fā)生,你可以將該對(duì)象的碰撞檢測(cè)屬性設(shè)置為Continuous,這時(shí)碰撞檢測(cè)算法將會(huì)防止對(duì)象穿過(guò)所有的靜態(tài)碰撞體,設(shè)置為Continuous Dynamic將還會(huì)防止穿過(guò)其他也設(shè)置為Continuous或者Continuous Dynamic的剛體。

    這就很好理解,如果我們的主角在運(yùn)動(dòng)中碰到的都是靜態(tài)collider,那么使用離散檢測(cè)是可以滿足的。如果我們?cè)谟螒蛑?,主角將?huì)碰撞到動(dòng)態(tài)的collider,那么檢測(cè)模式應(yīng)該選擇連續(xù)或者連續(xù)動(dòng)態(tài)檢測(cè)。這樣可以很好的避免穿透現(xiàn)象。

    然后,你以為這樣就高枕勿憂了么?在實(shí)際的項(xiàng)目中,我們可能會(huì)發(fā)現(xiàn),我們剛體上已經(jīng)選擇了連續(xù)檢測(cè)甚至連續(xù)動(dòng)態(tài)檢測(cè),依舊會(huì)有穿透問(wèn)題,這就是我上面列舉的兩條(3條),被碰撞體的碰撞器太薄,被碰撞體的速度太快。這樣依舊會(huì)導(dǎo)致穿透,那么原理是什么?我們知道unity中有fixedupdate,update這些更新方法,而這些更新中,都是有時(shí)間間隔更新的,更新的時(shí)候是用基礎(chǔ)速度*時(shí)間,很有可能這個(gè)結(jié)果計(jì)算出來(lái)的時(shí)候車(chē)已經(jīng)沖過(guò)了被碰撞體,就導(dǎo)致了我們的角色穿透,或者卡在被碰撞器的里面。

    so,知道了這些,我們?cè)陧?xiàng)目中就知道如何規(guī)避這些“bug”了