unity3d怎麼用代碼實現縮放粒子特效?

請教如何用程序實現縮放粒子特效大小


我們的做法比較簡單:

/// & /// 縮放粒子
/// &
/// &

粒子節點& /// &

綻放係數& public static void ScaleParticleSystem(GameObject gameObj, float scale)
{
var hasParticleObj = false;
var particles = gameObj.GetComponentsInChildren&(true);
var max = particles.Length;
for (int idx = 0; idx &< max; idx++) { var particle = particles[idx]; if(particle==null) continue; hasParticleObj = true; particle.startSize *= scale; particle.startSpeed *= scale; particle.startRotation *= scale; particle.transform.localScale *= scale; } if (hasParticleObj) { gameObj.transform.localScale = new Vector3(scale, scale, 1); } }


我用的Xffect 粒子插件,這個插件參考ogre的粒子系統做的,只需要設置一個全局參數就可以縮放整個粒子效果。參考這個視頻:http://www.jikexueyuan.com/course/2058.html


我也被這個問題困擾了好久...今天終於解決了...其實沒必要那麼麻煩掛腳本的...

有人提到了ParticleScaler插件,這個只能非運行狀態下起作用,一旦運行就沒用了。

修改一下粒子系統裡面的參數就好了。

Scaling Mode只要不是shape就行,改成hierarchy或者local就可以。asset store里的粒子特效貌似都是默認的shape。

演示一下,這是一段閃電粒子特效。

按照上述把scaling mode都給改了。

可以直接在父物體上修改scale,沒必要每個子物體都改,我把scale三個值都改成4。這個修改是每一個子物體都發生了相應變化的。

如果想放大後不糊,最好把用到的圖片模式改成point(no filter)這個。放大四倍效果如下。

腳本里修改scale就簡單了

transform.localScale = new Vector3(x,y,z);

xyz為倍數 2d視角下只修改xz就行了 最好保持數值一致

老天啊,趕緊讓我寫完作業吧....


這個不難吧 Unity4 Particle Scaler粒子縮放 你看一下這個博客


可以參考fxmaker,帶有


縮放粒子發射半徑 粒子數


整體縮放就縮放對象的transform,單獨的就改粒子發射器


推薦閱讀:

由unity引擎做的遊戲《缺氧》,它的地圖的機制是怎麼實現的?
unity中從Resources下讀取較大的資源會卡,有解決辦法么?
如何評價雲風與xlua作者關於unity,c#,lua的討論,以及他後來給出的方案?
mipmap的優點具體是什麼?
Unity程序員如何轉變為技術美術?現已熟悉UnityShaderlab.?

TAG:Unity遊戲引擎 |