首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在代码中改变Unity粒子系统纹理动画子画面?

如何在代码中改变Unity粒子系统纹理动画子画面?
EN

Stack Overflow用户
提问于 2019-02-20 06:59:21
回答 1查看 1K关注 0票数 2

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

代码语言:javascript
复制
    public ParticleSystem particles_galaxy;
        ParticleSystem.EmissionModule galaxy_emmitter;
        ParticleSystem.TextureSheetAnimationModule  galaxy_textureAnim;
        ParticleSystem.EmitParams galaxy_params;  

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

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

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

代码语言:javascript
复制
    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);
    }

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

EN

回答 1

Stack Overflow用户

发布于 2019-02-20 09:53:53

试试这个:

代码语言:javascript
复制
galaxy_textureAnim.startFrame = new ParticleSystem.MinMaxCurve(0, 2);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54776207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档