我正试图找到一种方法,在非对象的方向上发射粒子,然后远离物体。
使用角度为90°的圆锥形状,粒子飞离物体,这很好。但是,粒子是在随机点发出的,如here所示。
我希望粒子以某个角度发射。一个粒子北,一个粒子东北,一个粒子东,等等。
我创建了自己的八角网格,希望它会在所有角落发射,但发射仍然是随机的。
所以这就是我想做的事:http://i.imgur.com/3TRw9Gu.png
这可能吗,如果可以,怎么做?
此外,在它的同时:是否可以从子发射器粒子中获取父级?每个粒子都会发出一条小线索,但我似乎无法从子粒子中得到一个列表,只列出所有子发射粒子的列表。
我想为子粒子着色与父母相同的颜色。这可能吗?
答案 0 :(得分: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并自己看到了输入参数。
答案 1 :(得分:0)
你要做的是有8个独立的粒子系统,它们看起来好像你想要它们的锥形但是圆柱形。让它们变薄,并将它们指向你需要它们射入的确切方向。