Files
2026-03-04 10:03:45 +08:00

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");
}
}
}