unity 學(xué)習(xí):彈坑與碰撞檢測
今天學(xué)習(xí)模擬彈坑,一開始想去學(xué)貼花,然后unity官方給我說,如果不是對畫面要求很高,就用 QUAD 就好了。
也行吧,都是學(xué)習(xí)。于是我就去學(xué)了。然后發(fā)現(xiàn)即便的官方的教材也有非常多的細(xì)節(jié)沒給你說。這里我就當(dāng)給自己做筆記了。
一,quad 跟 貼花有本質(zhì)的區(qū)別, quad就是一塊硬紙板,不能完美地覆蓋在曲面上,但是貼花(似乎)又需要新的渲染管線來做,消耗會更大,我以后再說吧。
二、quad 如果跟 目標(biāo)的mesh貼在一起,會閃爍,我的解決方案是給 quad 做厚一點點,覆蓋在目標(biāo)貼圖上面,而不是重疊
三、盡管我現(xiàn)在是在說貼圖,但又跟碰撞檢測高度關(guān)聯(lián),因為彈坑是給射中的目標(biāo)準(zhǔn)備的,你要獲取正確目標(biāo),就必須要關(guān)注?碰撞檢測。 unity 的碰撞檢測有四種:
離散:最高性能,但計算非常粗糙,如果物體的速度很高(比如子彈),則會無法達(dá)到你的預(yù)期。表現(xiàn)為,明明應(yīng)該撞上某物體(比如一堵墻),但是算法認(rèn)為子彈有幾率穿過墻是合理的。
連續(xù):最低性能,但是最接近現(xiàn)實,因為它是進(jìn)行最嚴(yán)格的計算。unity 建議我們別用,但如果你有非常高速的物體需要精密計算,你還是得用它。
動態(tài)連續(xù):性能比【連續(xù)】稍微好一點點,它是以取巧的方式來換取性能,我現(xiàn)在就用的它,還行吧。建議子彈這類高速物體都用它。(測試用的速度 每秒40米 ,我很滿意)
掃描連續(xù):性能比動態(tài)連續(xù)更加好,unity 官方推薦,同樣是取巧的方式,但取巧的思路不同(可以認(rèn)為走了邪路),經(jīng)過我實際測試,這個方式在畫面表現(xiàn)上,可以取代動態(tài)連續(xù),但是由于走的邪路,對碰撞目標(biāo)的計算會出錯(一定出錯,不是幾率),所以 你只能在不需要獲取目標(biāo)的場景下使用

解決掉基礎(chǔ)問題后,由于我現(xiàn)在可以準(zhǔn)確獲得目標(biāo)了,于是我就能進(jìn)行判斷,是否允許留下彈坑,留下什么樣的彈坑(石頭材質(zhì) 和 皮革材質(zhì) , 我就可以分別制作不同的彈坑了)以及給它做特效,比如著火,冒煙,木屑等等。
好了,今天就這樣吧。