我正在使用Unity Sprite组件和各种发射器模块构建一个成形粒子系统(星系),其中精灵是静态的并且永远持续(100000秒)......
public ParticleSystem particles_galaxy;
ParticleSystem.EmissionModule galaxy_emmitter;
ParticleSystem.TextureSheetAnimationModule galaxy_textureAnim;
ParticleSystem.EmitParams galaxy_params;
我在程序上添加粒子,用位置和方向以及颜色等发射它们。我想从一组精灵中选择要绘制的精灵。
我已经在Inspector中为TextureSheetAnimationModule分配了几个sprite,我可以在编辑器中设置它们来改变绘制的内容。我可以使用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);
}
如何更改每个精灵的帧/精灵数?
试试这个:
galaxy_textureAnim.startFrame = new ParticleSystem.MinMaxCurve(0, 2);