gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:00:43 24 4
gpt4 key购买 nike

我正在为我们的学生游戏编写一个粒子系统,但遇到了一些障碍。我想改善对飞船火箭的影响,但我似乎不知道该怎么做。

下面是固定船上的效果:

alt text

这是它在移动的船上的样子:

alt text

我希望火焰始终保持相同的长度。这是 ParticleTick 函数:

void Particle::Tick(float a_DT)
{
// temporarily turned off to see the effect of the rest of the code more clearly
//m_Pos += m_Vel;

if (m_Owner) { m_Pos += m_Owner->GetParentSpeed(); }

m_Life -= 1;

if (m_Life <= 0) { m_Alive = false; }
}

提前致谢。

编辑:为了清楚一点,我希望效果拖尾,但我希望它以相同的方式拖尾,而不管发射器的速度如何。

最佳答案

您要根据母舰的速度使粒子移动得更快或更慢,但它们的生命周期是某个常数,您将其递减 1 直到达到零,对吗?

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


我认为这就是您想要的……但如果您对算法进行两项更改,它可能会更酷(也更现实):

  1. 当前行为(尾部的长度)是正确的如果粒子引擎的速度取决于推力(加速度而不仅仅是速度)。

  2. 一旦粒子离开引擎,粒子速度/方向的任何变化船对它没有影响。一旦粒子发射,它的速度和方向是恒定的,直到它消失。这实际上应该当你转动船或发生巨大变化时看起来很酷加速度。

干杯。

关于c++ - 无论发射器速度如何,粒子流的长度都应相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2185960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com