如果你只是想控制方向,使用网格绝对有效。使用网格在该点的法线作为方向(除非选中)从网格(无论是从顶点、边还是三角形)发射粒子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 并自己看到了输入参数。