别的文章里所直接缩放粒子物体的tranform,这是错误的,并不能影响粒子本身大小

关于main模块
我们应该修改startSize来修改发射出的粒子的大小
粒子系统是由多个模块组成的,除了表面上Emission,Shape这些模块,还有第一个没有显示名字的模块叫main,startSize是main模块的属性
在这里插入图片描述
startSize的类型为ParticleSystem.MinMaxCurve,这个类型既可以直接用数字赋值,也可以用一个ParticleSystem.MinMaxCurve类型赋值,可以接受不同的是为了应对不同的情况

粒子组件中指定粒子初始大小为一个整数时,可以直接用mian.startSzi=1赋值,以下是使用dotween的示例
在这里插入图片描述


  public ParticleSystem ps;
  private ParticleSystem.MainModule main;
  void Start()
  {
      main = ps.main;
      ////火焰逐渐减小 
 	  DOTween.To(() => main.startSize.constant, v => main.startSize = v, 0f, 20);

  }

粒子组件中指定粒子初始大小为随机大小时,可以声明一个ParticleSystem.MinMaxCurve类型的对象,并修改对象的最大值和最小值,然后赋值给粒子系统,以下是使用dotween的示例
startSize的类型为RandomBetweenTwoConstants
在这里插入图片描述

    public ParticleSystem ps;
    private ParticleSystem.MainModule main;
    private ParticleSystem.MinMaxCurve curve;
    void Start()
    {
        main = ps.main;
        curve = main.startSize;//获取当前粒子的随机大小
        ////火焰逐渐减小 分别修改最大值和最小值
        DOTween.To(() => curve.constantMin, v => curve.constantMin = v, 0f, 20);
        DOTween.To(() => curve.constantMax, v => curve.constantMax = v, 0f, 20)};
    }
    private void Update()
    {
        main.startSize = curve;//将随机大小赋值回粒子系统
    }

更多推荐