Единство - Частицы, испускающие неслучайно
Я пытаюсь найти способ испускать частицы в неслучайном направлении вокруг и от объекта.
Используя форму конуса с углом 90, частицы отлетают от объекта, что хорошо. Однако частицы испускаются в случайной точке, как видно здесь.
Я хотел бы, чтобы частицы излучали под определенными углами. Одна частица на севере, одна частица на северо-востоке, одна частица на востоке и так далее.
Я создал свою собственную восьмиугольную сетку, надеясь, что она будет излучать во всех углах, но излучение все еще случайное.
Вот что я хотел бы сделать: http://i.imgur.com/3TRw9Gu.png
Можно ли это сделать, и если да, то как?
Кроме того, в то время как в этом: возможно ли получить родителя от частицы субэмиттера? Каждая частица испускает небольшой след, но я не могу получить список от субчастиц, только список всех субэмиттерных частиц.
Я хочу покрасить субчастицы в тот же цвет, что и родительский. Это возможно?
2 ответа
Если вы просто хотите контролировать направление, использование сетки определенно работает. Частицы испускаются из сетки (будь то из вершины, ребра или треугольника) с использованием нормали сетки в этой точке в качестве направления (если только Random Direction
проверено), поэтому убедитесь, что нормали сетки в порядке. Еще лучше, создайте сетку самостоятельно:
Mesh mesh = new Mesh();
mesh.vertices = new Vector3[] { Vector3.zero, Vector3.zero, Vector3.zero, Vector3.zero, Vector3.zero, Vector3.zero, Vector3.zero, Vector3.zero };
mesh.normals = new Vector3[] { new Vector3( 1f, 0f, 0f), new Vector3( 1f, 0f, 1f), new Vector3( 0f, 0f, 1f), new Vector3(-1f, 0f, 1f), new Vector3(-1f, 0f, 0f), new Vector3(-1f, 0f, -1f), new Vector3( 0f, 0f, -1f), new Vector3( 1f, 0f, -1f)};
mesh.triangles = new int[] {0, 1, 2}; // Unused triangle that apparently makes the emissor work
UnityEditor.AssetDatabase.CreateAsset(mesh, "Assets/8DirEmitter.asset");
Обратите внимание на Shape
Настройки на рис. Но в этом случае вы не будете иметь никакого контроля над тем, какое из 8 направлений направляет каждая новая частица, поэтому она будет выглядеть очень неоднородной:
Если вы хотите достойного контроля над происходящим, закодируйте его вручную, используя ParticleSystem.Emit()
Изменить: Emit (Particle particle)
перегрузка не так в документах. Emit использует UnityEngine.ParticleSystem.Particle, а не устаревшую UnityEngine.Particle. Это... очень запутанно. Я просто работал с частицами, и это доставляло мне много хлопот, пока я не декомпилировал UnityEngine и не увидел входные параметры самостоятельно.
То, что вы пытаетесь сделать, - это иметь 8 отдельных систем частиц, и они выглядят не так, как если бы вы хотели, чтобы они имели форму конуса, но имели цилиндрическую форму. сделайте их тонкими и направьте их точно в том направлении, в котором вам нужно стрелять.