unity3d怎麼用代碼實現縮放粒子特效?
請教如何用程序實現縮放粒子特效大小
我們的做法比較簡單:
粒子節點&
/// & 綻放係數&
public static void ScaleParticleSystem(GameObject gameObj, float scale) /// &
/// &
{
var hasParticleObj = false;
var particles = gameObj.GetComponentsInChildren&
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遊戲引擎 |