Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public void AddSubEmitter(ParticleSystem subEmitter, ParticleSystemSubEmitterType type, ParticleSystemSubEmitterProperties properties);

public void AddSubEmitter(ParticleSystem subEmitter, ParticleSystemSubEmitterType type, ParticleSystemSubEmitterProperties properties, float emitProbability);

Параметры

subEmitter Субэмиттер для добавления.
type Событие, создающее новые частицы.
properties Свойства новых частиц.
emitProbability Вероятность того, что субэмиттер излучает частицы. Принимает значения от 0 до 1, где 0 — никогда, а 1 — всегда.

Описание

Добавить новый дополнительный эмиттер.

Смотрите так же: ParticleSystem.SubEmittersModule.RemoveSubEmitter.

using UnityEngine; // Добавляем субэмиттер рождения public class ExampleClass : MonoBehaviour { void Start() { // Простой материал частиц без текстуры. Material particleMaterial = new Material(Shader.Find("Particles/Standard Surface")); // Создаем зеленую частицусистему. var rootSystemGO = new GameObject("ParticleSystem"); rootSystemGO.transform.Rotate(-90, 0, 0); // Rotate so the system emits upwards. var rootParticleSystem = rootSystemGO.AddComponent<ParticleSystem>(); rootSystemGO.GetComponent<ParticleSystemRenderer>().material = particleMaterial; var mainModule = rootParticleSystem.main; mainModule.startColor = Color.green; mainModule.startSize = 0.5f; // Разбросайте частицы побольше, чтобы эффект суб-эмиттера был более очевидным. var shapeModule = rootParticleSystem.shape; shapeModule.radius = 100; // Создаем наш субэмиттер и настраиваем всплески. var subSystemGO = new GameObject("ParticleSystem"); var subParticleSystem = subSystemGO.AddComponent<ParticleSystem>(); subSystemGO.GetComponent<ParticleSystemRenderer>().material = particleMaterial; var subMainModule = subParticleSystem.main; subMainModule.startColor = Color.red; subMainModule.startSize = 0.25f; subMainModule.startLifetime = 0.5f; // very short life particles. var emissionModule = subParticleSystem.emission; emissionModule.rate = 2; // 1 particle will emit every 0.5 sec. emissionModule.SetBursts(new ParticleSystem.Burst[] // A burst will emit at 1 and 3 secs. { new ParticleSystem.Burst(1.0f, 10), new ParticleSystem.Burst(3.0f, 10) }); // Настройте субчастицы так, чтобы они исчезали со временем. var colorModule = subParticleSystem.colorOverLifetime; colorModule.enabled = true; var gradient = new Gradient(); gradient.SetKeys( new GradientColorKey[] { new GradientColorKey(Color.white, 0.0f), new GradientColorKey(Color.white, 1.0f) }, // Color remains untouched. new GradientAlphaKey[] { new GradientAlphaKey(1.0f, 0.0f), new GradientAlphaKey(0.0f, 1.0f) }); // Alpha fades colorModule.color = gradient; // Настраиваем субэмиттер. subSystemGO.transform.SetParent(rootSystemGO.transform); var subEmittersModule = rootParticleSystem.subEmitters; subEmittersModule.enabled = true; subEmittersModule.AddSubEmitter(subParticleSystem, ParticleSystemSubEmitterType.Birth, ParticleSystemSubEmitterProperties.InheritNothing); } } using UnityEngine; // Добавляем субэмиттер коллизий public class ExampleClass : MonoBehaviour { void Start() { // Для этого примера нам понадобится что-то, с чем можно столкнуться в мире. var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.transform.position = new Vector3(0, 10, 0); // Position above the ParticleSystem. cube.transform.localScale = new Vector3(10, 10, 10); // Простой материал частиц без текстуры. Material particleMaterial = new Material(Shader.Find("Particles/Standard Surface")); // Create a green ParticleSystem. var rootSystemGO = new GameObject("ParticleSystem"); rootSystemGO.transform.Rotate(-90, 0, 0); // Rotate so the system emits upwards. var rootParticleSystem = rootSystemGO.AddComponent<ParticleSystem>(); rootSystemGO.GetComponent<ParticleSystemRenderer>().material = particleMaterial; var mainModule = rootParticleSystem.main; mainModule.startColor = Color.green; mainModule.startSize = 0.5f; // Включить и настроить модуль коллизий. var collisionModule = rootParticleSystem.collision; collisionModule.enabled = true; collisionModule.type = ParticleSystemCollisionType.World; // Создаем наш саб-эмиттер и настраиваем всплески. var subSystemGO = new GameObject("ParticleSystem"); var subParticleSystem = subSystemGO.AddComponent<ParticleSystem>(); subSystemGO.GetComponent<ParticleSystemRenderer>().material = particleMaterial; var subMainModule = subParticleSystem.main; subMainModule.startColor = Color.red; subMainModule.startSize = 0.25f; var emissionModule = subParticleSystem.emission; emissionModule.SetBursts(new ParticleSystem.Burst[] { new ParticleSystem.Burst(0.0f, 10) }); // We will emit 10 particles upon collision. // Настроить субэмиттер. subSystemGO.transform.SetParent(rootSystemGO.transform); var subEmittersModule = rootParticleSystem.subEmitters; subEmittersModule.enabled = true; subEmittersModule.AddSubEmitter(subParticleSystem, ParticleSystemSubEmitterType.Collision, ParticleSystemSubEmitterProperties.InheritNothing); } } using UnityEngine; // Добавляем субэмиттер смерти public class ExampleClass : MonoBehaviour { void Start() { // Простой материал частиц без текстуры. Material particleMaterial = new Material(Shader.Find("Particles/Standard Surface")); // Создайте зеленую частицусистему. var rootSystemGO = new GameObject("ParticleSystem"); rootSystemGO.transform.Rotate(-90, 0, 0); // Rotate so the system emits upwards. var rootParticleSystem = rootSystemGO.AddComponent<ParticleSystem>(); rootSystemGO.GetComponent<ParticleSystemRenderer>().material = particleMaterial; var mainModule = rootParticleSystem.main; mainModule.startColor = Color.green; mainModule.startSize = 0.5f; // Создадим наш дополнительный эмиттер и настроим всплески. var subSystemGO = new GameObject("ParticleSystem"); var subParticleSystem = subSystemGO.AddComponent<ParticleSystem>(); subSystemGO.GetComponent<ParticleSystemRenderer>().material = particleMaterial; var subMainModule = subParticleSystem.main; subMainModule.startColor = Color.red; subMainModule.startSize = 0.25f; var emissionModule = subParticleSystem.emission; emissionModule.SetBursts(new ParticleSystem.Burst[] { new ParticleSystem.Burst(0.0f, 10) }); // We will emit 10 particles upon death. // Настроить субэмиттер. subSystemGO.transform.SetParent(rootSystemGO.transform); var subEmittersModule = rootParticleSystem.subEmitters; subEmittersModule.enabled = true; subEmittersModule.AddSubEmitter(subParticleSystem, ParticleSystemSubEmitterType.Death, ParticleSystemSubEmitterProperties.InheritNothing); } } using UnityEngine; // Добавить ручной саб-эмиттер public class ExampleClass : MonoBehaviour { private ParticleSystem ps; private float m_Timer = 0.0f; public float m_Interval = 2.0f; void Start() { // Простой материал частиц без текстуры. Material particleMaterial = new Material(Shader.Find("Particles/Standard Surface")); // Создайте зеленую частицусистему. var rootSystemGO = new GameObject("ParticleSystem"); rootSystemGO.transform.Rotate(-90, 0, 0); // Rotate so the system emits upwards. ps = rootSystemGO.AddComponent<ParticleSystem>(); rootSystemGO.GetComponent<ParticleSystemRenderer>().material = particleMaterial; var mainModule = ps.main; mainModule.startColor = Color.green; mainModule.startSize = 0.5f; // Создаем наш саб-эмиттер и настраиваем всплески. var subSystemGO = new GameObject("ParticleSystem"); var subParticleSystem = subSystemGO.AddComponent<ParticleSystem>(); subSystemGO.GetComponent<ParticleSystemRenderer>().material = particleMaterial; var subMainModule = subParticleSystem.main; subMainModule.startColor = Color.red; subMainModule.startSize = 0.25f; var emissionModule = subParticleSystem.emission; emissionModule.SetBursts(new ParticleSystem.Burst[] { new ParticleSystem.Burst(0.0f, 4) }); // We will emit 10 particles when triggered. // Настраиваем субэмиттер. subSystemGO.transform.SetParent(rootSystemGO.transform); var subEmittersModule = ps.subEmitters; subEmittersModule.enabled = true; subEmittersModule.AddSubEmitter(subParticleSystem, ParticleSystemSubEmitterType.Manual, ParticleSystemSubEmitterProperties.InheritNothing); } private void Update() { m_Timer += Time.deltaTime; while (m_Timer >= m_Interval) { ps.TriggerSubEmitter(0); m_Timer -= m_Interval; } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3