Files
BH3/Assets/Scripts/Assembly-CSharp/MoleMole/MonoEffectPluginSpeedSensitive.cs
2025-09-11 15:00:19 +08:00

47 lines
1.2 KiB
C#

using UnityEngine;
namespace MoleMole
{
public class MonoEffectPluginSpeedSensitive : MonoBehaviour
{
[Header("Target Particle Systems")]
public ParticleSystem[] targetParticleSystems;
[Header("Max Speed")]
public float maxSpeed = 1f;
[SerializeField]
private float[] _origRateMaxes;
[SerializeField]
private Vector3 _lastPos;
private void Awake()
{
_origRateMaxes = new float[targetParticleSystems.Length];
_lastPos = base.transform.position;
for (int i = 0; i < targetParticleSystems.Length; i++)
{
ParticleSystem.EmissionModule emission = targetParticleSystems[i].emission;
ParticleSystem.MinMaxCurve rate = emission.rate;
_origRateMaxes[i] = rate.constantMax;
rate.curveMultiplier = 0f;
emission.rate = rate;
}
}
private void Update()
{
float num = Mathf.Min(1f, Vector3.Distance(base.transform.position, _lastPos) / (Time.deltaTime * maxSpeed));
for (int i = 0; i < targetParticleSystems.Length; i++)
{
ParticleSystem.EmissionModule emission = targetParticleSystems[i].emission;
ParticleSystem.MinMaxCurve rate = emission.rate;
rate.constantMax = _origRateMaxes[i] * num;
emission.rate = rate;
}
_lastPos = base.transform.position;
}
}
}