无论发射器速度如何,粒子流的长度应相同

时间:2010-02-02 16:58:12

标签: c++ particles

我正在为我们的学生游戏编写一个粒子系统,而且我遇到了一些障碍。我想改善对火箭的影响,但我似乎无法弄清楚如何。

这是效果在固定船上的效果:

alt text

以下是它在移动船上的样子:

alt text

我希望火焰始终保持相同的长度。这是Particle的{​​{1}}函数:

Tick

提前致谢。

编辑:为了清理一下,我希望效果能够跟踪,但无论发射器的速度如何,我都希望它能以相同的方式跟踪。

3 个答案:

答案 0 :(得分:6)

你根据父船的速度让粒子移动得更快或更慢,但它们的生命周期是一定的,你减1,直到你达到零,对吗?

您可能想要做的是将生命周期设置为距离值,而不是一定数量的刻度。然后,从生命周期中减去船舶的速度(或者你在每个蜱上添加到每个粒子的任何东西)。当寿命变为负值时,杀死粒子。


我认为这就是你想要的......但如果对你的算法进行两处修改,它可能会更酷(也更实际):

  1. 如果粒子,当前行为(尾部的长度)是正确的 从发动机出来的速度是基于推力(加速度 而不仅仅是速度)。

  2. 一旦粒子离开发动机,速度/方向的任何变化 这艘船对它没有影响。一旦粒子被发射出来,就会有速度 和方向是不变的,直到它消失。这应该是 当你翻船时,看起来很酷,或者变化很大 加速度。

  3. 干杯。

答案 1 :(得分:0)

如果您希望它具有一致的长度,那么您需要通过将其除以父级的速度来标准化父级的速度。显然,如果父母坐着不动,这将无法工作,因此在这种情况下你需要某种“空闲”状态的粒子(随机锥形分布或其他)。

此外,仅在构造函数中获取速度,并在刻度期间继续使用它。

答案 2 :(得分:0)

系统中是否有随机变量?每个发射器的粒子数,粒子寿命等?这将导致小径变化。