Я строю систему частиц в форме (галактику), используя компонент Unity Sprite и различные модули-эмиттеры, где спрайты статичны и работают вечно (100000 секунд) ...
public ParticleSystem particles_galaxy;
ParticleSystem.EmissionModule galaxy_emmitter;
ParticleSystem.TextureSheetAnimationModule galaxy_textureAnim;
ParticleSystem.EmitParams galaxy_params;
Я процедурно добавляю частицы, испуская их с позицией, ориентацией, цветом и т. Д. Я хочу выбрать, какой спрайт рисовать из группы спрайтов.
Я назначил несколько спрайтов для 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);
}
Как изменить номер кадра / спрайта для каждого спрайта?