問題:Unity粒子系統(tǒng)(Particle System)移動時發(fā)射粒子(RateOverDistance)不起效

問題

期望在人物移動時生成粒子,停止移動時不再生成


期望的效果.gif

查到Unity的粒子系統(tǒng)(Particle System)中有屬性RateOverDistance:根據(jù)移動距離發(fā)射粒子,不移動時不發(fā)射。恰好可滿足當前需求

實際使用時發(fā)現(xiàn),不管怎么移動都不發(fā)射粒子,但RateOverTime(隨時間推移發(fā)射粒子)的功能是正常的

解決方案

粒子系統(tǒng)有一屬性:EmitterVelocity,它有2種模式

  • Transform:通過Transform中Position的變化計算粒子系統(tǒng)的移動速度
  • Rigidbody:將剛體(若有)的速度作為粒子系統(tǒng)的移動速度

看了上述解釋即可想到,若EmitterVelocity設置為Rigidbody模式,當該粒子系統(tǒng)沒有剛體時,系統(tǒng)會認為該發(fā)射器是不動的,因此移動速度為0,因此移動距離為0:因此RateOverDistance不會發(fā)射粒子

所以將EmitterVelocity設置為Transform即可

解決過程

實踐時,當發(fā)現(xiàn)RateOverDistance不起效時,沒有深究,而是考慮通過自行控制粒子對象的顯隱來實現(xiàn)期望效果

但發(fā)現(xiàn),若在人物停止移動的時候隱藏粒子對象,所有粒子會立刻全部消失,非常突然,表現(xiàn)不好


表現(xiàn)不好的效果.gif

最終還是老老實實地搜索RateOverDistance不起效的原因,簡單地(修改了一個已有的屬性項)解決了這個問題

反思

問題確定后,若解決不了,不要輕易嘗試更換問題(這是逃避真正問題的一種表現(xiàn))

不解決真正的問題,它會一直折磨著你,通過各種方式來干擾你以凸顯它的存在,逼迫你必須面對它

仔細研究問題會發(fā)現(xiàn),其實它可能并沒有那么難

與其通過各種旁門左道去避開真正的問題,不如迎難而上
確認無能為力(該問題真的無解)后,再思考如何拉近現(xiàn)實與期望的差距
盡可能逼近那個并不存在(或憑借當前力量和現(xiàn)狀無法得到)的最優(yōu)解決方案

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 這個是我剛剛整理出的Unity面試題,為了幫助大家面試,同時幫助大家更好地復習Unity知識點,如果大家發(fā)現(xiàn)有什么...
    編程小火雞閱讀 4,006評論 2 34
  • 轉(zhuǎn)自:https://blog.csdn.net/dingxiaowei2013/article/details/...
    豆錚閱讀 1,380評論 0 2
  • 1.Rigidbody overview 剛體是可以讓一個GameObject(以下簡稱游戲?qū)ο螅┍憩F(xiàn)出物理行為的...
    HelloWorld_de97閱讀 546評論 0 0
  • Unity技術(shù)面試題 一:什么是協(xié)同程序? 答:在主線程運行時同時開啟另一段邏輯處理,來協(xié)助當前程序的執(zhí)行。換句話...
    沐冉閱讀 3,037評論 1 19
  • 有些事情,難以啟齒。 其實,也沒什么好羞澀的。 大家都上過班,都了解彼此的心情。 努力工作,剩下的留給天意。 敢于...
    烏龜?shù)穆?/span>閱讀 221評論 0 0

友情鏈接更多精彩內(nèi)容