59 lines
1.6 KiB
C#
59 lines
1.6 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace ARTNGAME.Skymaster
|
|
{
|
|
[RequireComponent(typeof(ParticleSystem))]
|
|
public class JetParticleEffectSM : MonoBehaviour
|
|
{
|
|
public Color minColour;
|
|
|
|
private AeroplaneControllerSM m_Jet;
|
|
|
|
private ParticleSystem m_System;
|
|
|
|
private float m_OriginalStartSize;
|
|
|
|
private float m_OriginalLifetime;
|
|
|
|
private Color m_OriginalStartColor;
|
|
|
|
private void Start()
|
|
{
|
|
m_Jet = FindAeroplaneParent();
|
|
m_System = GetComponent<ParticleSystem>();
|
|
ParticleSystem.MainModule main = m_System.main;
|
|
m_OriginalLifetime = main.startLifetime.constant;
|
|
m_OriginalStartSize = main.startSize.constant;
|
|
m_OriginalStartColor = main.startColor.color;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
ParticleSystem.MainModule main = m_System.main;
|
|
ParticleSystem.MinMaxCurve startLifetime = main.startLifetime;
|
|
startLifetime.constant = Mathf.Lerp(0f, m_OriginalLifetime, m_Jet.Throttle);
|
|
ParticleSystem.MinMaxCurve startSize = main.startSize;
|
|
startSize.constant = Mathf.Lerp(m_OriginalStartSize * 0.3f, m_OriginalStartSize, m_Jet.Throttle);
|
|
ParticleSystem.MinMaxGradient startColor = main.startColor;
|
|
startColor.color = Color.Lerp(minColour, m_OriginalStartColor, m_Jet.Throttle);
|
|
}
|
|
|
|
private AeroplaneControllerSM FindAeroplaneParent()
|
|
{
|
|
Transform parent = base.transform;
|
|
while (parent != null)
|
|
{
|
|
AeroplaneControllerSM component = parent.GetComponent<AeroplaneControllerSM>();
|
|
if (component == null)
|
|
{
|
|
parent = parent.parent;
|
|
continue;
|
|
}
|
|
return component;
|
|
}
|
|
throw new Exception(" AeroplaneContoller not found in object hierarchy");
|
|
}
|
|
}
|
|
}
|