2

我试图找到一种方法以非随机方向在物体周围和远离物体的方向发射粒子。

使用 Cone 形状,角度为 90,粒子飞离物体,这很好。但是,粒子是在随机点发射的,如此处所示

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

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

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

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


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

我想将子粒子着色为与父粒子相同的颜色。这可能吗?

4

2 回答 2

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 并自己看到了输入参数。

于 2015-06-09T15:18:13.160 回答
0

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

于 2015-06-09T14:49:06.170 回答