前言
之前已經(jīng)實(shí)現(xiàn)了UE4中跟隨物體利用粒子系統(tǒng)產(chǎn)生軌跡的效果,文章鏈接如下:
虛幻引擎4利用粒子系統(tǒng)實(shí)現(xiàn)物體軌跡描繪_ADi_hhh的博客-CSDN博客
但是上篇文章還留下了兩個(gè)問(wèn)題
- 軌跡如何清除,并隨時(shí)啟用生成?
- 軌跡積累后,粒子的產(chǎn)生對(duì)系統(tǒng)的內(nèi)存等是否帶來(lái)壓力,導(dǎo)致系統(tǒng)運(yùn)行越來(lái)越吃力。
粒子頻繁產(chǎn)生對(duì)系統(tǒng)運(yùn)行的影響
針對(duì)這個(gè)問(wèn)題,我進(jìn)行了測(cè)試,在物體運(yùn)動(dòng)時(shí)一直產(chǎn)生軌跡,到后期發(fā)現(xiàn)物體的速度變化降低了,粒子的積累對(duì)系統(tǒng)運(yùn)行有著顯著的影響。
為了降低計(jì)算壓力,我在粒子發(fā)射器之前加了一個(gè)延遲,降低粒子產(chǎn)生的頻率,從而盡可能地降低粒子的產(chǎn)生,同時(shí)又能夠看清楚軌跡。
軌跡的清除
由于“在位置處生成發(fā)射器”是發(fā)射粒子后就遺忘的效果,因此這就給消除已經(jīng)生成的粒子帶來(lái)了困難。
)
但我們可以很自然地想到,如果每次發(fā)射粒子,我都把它放入到數(shù)組或容器中,然后想要?jiǎng)h除軌跡(粒子),只要按照索引,依次消除就可以了。
是這樣的,但由于不熟悉其中的各種api,我還是浪費(fèi)了很多時(shí)間。
首先建立“粒子系統(tǒng)組件”類(lèi)型的數(shù)組,命名為“已經(jīng)發(fā)射的粒子”,在每次發(fā)射器發(fā)射粒子時(shí),就利用“array add”的節(jié)點(diǎn),將該粒子的對(duì)象引用加入到數(shù)組中。
)
當(dāng)Q鍵按下時(shí),只要“軌跡粒子索引”的值+1的結(jié)果不大于當(dāng)前數(shù)組的長(zhǎng)度,就說(shuō)明當(dāng)前的粒子還沒(méi)有消除完,因此需要執(zhí)行如下循環(huán):
- 從數(shù)組中取出當(dāng)前“軌跡粒子索引”對(duì)應(yīng)的粒子組件對(duì)象引用并銷(xiāo)毀;
- “軌跡粒子索引+1”
- “軌跡粒子索引+1”的值是否大于數(shù)組長(zhǎng)度,如果大于,說(shuō)明目前所有的粒子都已經(jīng)消除了,執(zhí)行如下:
- 重置“軌跡粒子索引”為0;
- 重置“已經(jīng)發(fā)射的粒子”為空;
- 如果“軌跡粒子索引+1”的值是否大于數(shù)組長(zhǎng)度,如果不大于,繼續(xù)取出對(duì)應(yīng)粒子索引的對(duì)象并銷(xiāo)毀
Note: 一定要注意索引不要超出界限了,因?yàn)樗饕龔?開(kāi)始,但是數(shù)組長(zhǎng)度不是,超出界限,系統(tǒng)可能直接崩潰,只能重啟,因此在編寫(xiě)這個(gè)藍(lán)圖之后,一定先保存再運(yùn)行,不然可能系統(tǒng)又要重新搭建了。別問(wèn)我為什么知道
搭建完成后,系統(tǒng)運(yùn)行的情況就是這樣的:
小結(jié)
本文主要承接上文利用粒子系統(tǒng)實(shí)現(xiàn)物體軌跡描繪的文章,講述如何消除之前的軌跡。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-471663.html
如果您覺(jué)得我寫(xiě)的不錯(cuò),麻煩給我一個(gè)免費(fèi)的贊!如果內(nèi)容中有錯(cuò)誤,也歡迎向我反饋。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-471663.html
到了這里,關(guān)于虛幻引擎4利用粒子系統(tǒng)實(shí)現(xiàn)物體軌跡描繪2- 消除軌跡的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!