TheLudGamer 发表于 2023-2-14 15:58

unity3d怎么用代码实现缩放粒子特效?

请教如何用程序实现缩放粒子特效大小

c0d3n4m 发表于 2023-2-14 16:08

我也被这个问题困扰了好久...今天终于解决了...其实没必要那么麻烦挂脚本的...
有人提到了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就行了 最好保持数值一致

老天啊,赶紧让我写完作业吧....

七彩极 发表于 2023-2-14 16:11

可以参考fxmaker,带有

DomDomm 发表于 2023-2-14 16:12

我用的Xffect 粒子插件,这个插件参考ogre的粒子系统做的,只需要设置一个全局参数就可以缩放整个粒子效果。参考这个视频:
http://www.jikexueyuan.com/course/2058.html

FeastSC 发表于 2023-2-14 16:18

我们的做法比较简单:
    /// <summary>
    /// 缩放粒子
    /// </summary>
    /// <param name="gameObj">粒子节点</param>
    /// <param name="scale">绽放系数</param>
    public static void ScaleParticleSystem(GameObject gameObj, float scale)
    {
      var hasParticleObj = false;
      var particles = gameObj.GetComponentsInChildren<ParticleSystem>(true);
      var max = particles.Length;
      for (int idx = 0; idx < max; idx++)
      {
            var particle = particles;
            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);
      }
    }

Arzie100 发表于 2023-2-14 16:21

缩放粒子发射半径 粒子数
页: [1]
查看完整版本: unity3d怎么用代码实现缩放粒子特效?