Unity3D - 如何连续发射粒子?

时间:2017-12-21 14:45:53

标签: unity3d particle-system

我最近将我的项目升级到5.6.1f1。

我有一个跟踪目标的导航导弹,并附有一个粒子系统来模拟烟雾。

之前我升级了项目,烟雾效果很好。我在导弹后面持续供应一些具有良好烟雾效果的粒子。我忘记了升级之前使用的Unity版本(我认为5.4),但粒子系统的发射模块只有rate设置。

现在我升级到了5.6.1f1,我烟雾中的颗粒被分开了,就像从蒸汽火车里出来的蒸汽一样:

enter image description here

排放模块现在有rate over timerate over distance。我玩过这些设置,但似乎没有任何调整到我想要的地方。

我已经缩小了我的导弹以非常高的速度行进的事实。如果导弹行进得更慢,那么粒子看起来更好。但是,导弹是导弹,像我的其他物体一样快速行进。在我以前使用的Unity版本中(我认为5.4),导弹的速度并没有影响粒子的发射。

所以,我想我的问题是:如何连续发射不受速度影响的粒子?

(作为参考,这里是我希望我的粒子看起来的样子,无论导弹行进的速度如何) enter image description here

2 个答案:

答案 0 :(得分:0)

我曾经遇到过这个问题。粒子继承了父母的速度。我无法记住它的位置,但有一个名为" Emitter Velocity Scale"应该设置为0。

这应该位于粒子系统本身的某个位置。

关于特定更新的粒子系统中有些变化的答案也有答案。引自this统一论坛帖子:

  

在粒子系统下单击渲染器选项卡将其打开,如果没有单击材料选项卡上的圆圈并选择默认粒子材料,则检查材料槽,然后它将正常工作。

答案 1 :(得分:0)

对于寻找同一问题答案的人,我发现this帖子。

“从Unity 5.5开始,粒子系统(PS)使用发射率超过距离或继承速度(两者都在我们的粒子效应资产中大量使用)并且是刚体(RB)对象的父级,当你拖动时它们似乎不起作用对象(使用RB组件)或更改变换组件中的位置值。

原因是RB速度已经覆盖任何形式的位置平移,以将速度值馈送到需要速度数据才能正常工作的PS模块。简单地说,你应该使用Rigidbody.velocity(甚至不是用于检测边界的Rigidbody.position)而不是Transform.position / Translate来移动对象。“

我只是改变了:

transform.position += transform.forward * speed * Time.deltaTime;

rb.velocity = transform.forward * speed * 40 * Time.deltaTime;

其中速度相似且烟雾未分离。