计算Unity中粒子系统的startLifetime

时间:2017-08-29 16:42:30

标签: c# unity3d

我想通过代码处理粒子系统。如果父级立方体的高度为10个单位,则粒子系统应自行计算startLifeTime(以达到立方体的顶部)。

所以..我使用的计算是

  

startLifetime = cubeHeight / startSpeed

现在代码

private void Start()
{
    Vector3 liftScale = transform.localScale; // The scaling of my object

    ParticleSystem.ShapeModule particleShape = liftParticles.GetComponent<ParticleSystem>().shape; // reference to the shape
    particleShape.radius = liftScale.x > liftScale.z ? liftScale.x : liftScale.z; // set the radius

    ParticleSystem.MainModule particleMain = liftParticles.GetComponent<ParticleSystem>().main; // reference to the PS.main
    particleMain.startLifetime = liftScale.y / particleMain.startSpeed; // set the startLifetime
}

使用此代码时,编译器会说

  

运算符不能应用于'float'类型的操作数   'ParticleSystem.MinMaxCurve'

那么如何计算liftScale.y / particleMain.startSpeed

2 个答案:

答案 0 :(得分:1)

您需要使用particleMain.startSpeed.constant

答案 1 :(得分:0)

这意味着particleMain.startSpeed具有MinMaxCurve类型。 尝试用particleMain.startSpeedMultiplier替换它。