【问题标题】:How to change Unity particle system texture animation sprite in code?如何在代码中更改 Unity 粒子系统纹理动画精灵?
【发布时间】:2019-07-13 13:04:24
【问题描述】:

我正在使用 Unity Sprite 组件和各种发射器模块构建一个成形的粒子系统(一个星系),其中 sprite 是静态的并且永远持续(100000 秒)...

    public ParticleSystem particles_galaxy;
        ParticleSystem.EmissionModule galaxy_emmitter;
        ParticleSystem.TextureSheetAnimationModule  galaxy_textureAnim;
        ParticleSystem.EmitParams galaxy_params;  

我在程序上添加粒子,用位置、方向和颜色等发射它们。我想从一组精灵中选择要绘制的精灵。

我已经为 Inspector 中的 TextureSheetAnimationModule 分配了几个精灵,我可以在编辑器中设置它们来更改绘制的内容。我可以使用galaxy_textureAnim.startFrame来更改代码中用于粒子的精灵来指定帧号,但这会影响所有精灵并且不会随着添加的每个精灵而改变。

在这里,我尝试添加十个螺旋精灵,其中包含从两个选项中选择的随机纹理:

    for(int n = 0; n < 10; n++){
        particleRadialDistance = n*0.1f;
        particleRadialPosition = n*0.1f;
        placement.y = Mathf.Lerp(0.35f, 0.5f, particleRadialDistance);
        placement.x = particleRadialPosition*Mathf.PI*2;
        galaxy_params.position = class_utilities.PositionFromPolar(placement);
        galaxy_params.rotation = 180+Mathf.Lerp(0,-360,particleRadialPosition);
        galaxy_params.startSize = Mathf.Lerp(1f, 2f, particleRadialDistance);
        galaxy_textureAnim.startFrame = Random.Range(0,2);
        particles_galaxy.Emit(galaxy_params, 1);
    }

如何更改每个精灵的帧/精灵编号?

【问题讨论】:

    标签: unity3d particle-system


    【解决方案1】:

    试试这个:

    galaxy_textureAnim.startFrame = new ParticleSystem.MinMaxCurve(0, 2);
    

    【讨论】:

    • 谢谢。这允许随机选择,但我可以将其更改为每个精灵选择一帧吗?我试过 if(particleRadialPosition
    猜你喜欢
    • 1970-01-01
    • 2019-11-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多