Unity - 非随机发射的粒子

Unity - Particles emitting non-random

我正在尝试寻找一种方法,在物体周围和远离物体的非随机方向发射粒子。

使用Cone形状,角度90,粒子飞离物体,很好。但是,粒子是在随机点发射的,如 here.

所示

我希望粒子以特定角度发射。北一粒,东北一粒,东一粒,等等。

我创建了自己的八角网格,希望它能在所有角落发光,但发光仍然是随机的。

这就是我想要做的:http://i.imgur.com/3TRw9Gu.png

这可能吗?如果可以,怎么做?


此外,同时:是否可以从子发射器粒子中获取父粒子?每个粒子都发出一条小轨迹,但我似乎无法从子粒子中获取列表,只能获取所有子发射器粒子的列表。

我想给子粒子涂上与父粒子相同的颜色。这可能吗?

你想要做的是有 8 个独立的粒子系统,它们看起来不像你想要的圆锥形,而是圆柱形。使它们变薄,并将它们指向您需要它们射击的确切方向。

如果你只是想控制方向,使用网格绝对可行。使用该点的网格法线作为方向(除非选中 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) 重载在文档中是错误的。发射使用 UnityEngine.ParticleSystem.Particle, not the legacy UnityEngine.Particle。这……非常混乱。我只是在处理粒子,这给我带来了很多麻烦,直到我反编译了 UnityEngine 并自己看到了输入参数。