Unity - 发射非随机粒子

问题描述 投票:0回答:2

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

使用圆锥形状,角度为90,颗粒飞离物体,效果很好。然而,粒子是在随机点发射的,如图所示here

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

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

所以这就是我想做的:https://i.stack.imgur.com/kp0VA.png

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


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

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

unity-game-engine particles particle-system
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 个方向之一,因此它看起来会非常不完整:

Eight Directions Particle System, with Shape settings

如果您想对正在发生的事情进行适当的控制,请使用 ParticleSystem.Emit()

自己手动编码

编辑:文档中的

Emit (Particle particle)
重载是错误的。 Emit 使用 UnityEngine.ParticleSystem.Particle,而不是旧版 UnityEngine.Particle。这……非常令人困惑。我只是在处理粒子,这给我带来了很多麻烦,直到我反编译 UnityEngine 并自己看到了输入参数。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.