【问题标题】:Unity - Particles emitting non-randomUnity - 粒子发射非随机
【发布时间】:2015-08-24 08:21:28
【问题描述】:

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

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

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

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

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

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


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

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

【问题讨论】:

    标签: unity3d particle-system particles trail


    【解决方案1】:

    如果你只是想控制方向,使用网格肯定可以。使用网格在该点的法线作为方向(除非选中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 个粒子。对于任何想要创建相同东西的人来说,这就是代码。 particleSystem.Emit(target.position, (Vector3.forward * speed), 0.25f, 10f, Color.white); 我正在更改每个粒子的 Vector3。再次感谢 Emilio!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多