Как изменить спрайт анимации текстуры системы частиц Unity в коде? - PullRequest
0 голосов
/ 20 февраля 2019

Я строю систему частиц в форме (галактику), используя компонент 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);
    }

Как изменить номер кадра / спрайта для каждого спрайта?

1 Ответ

0 голосов
/ 20 февраля 2019

Попробуйте это:

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