Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ExpandingParticleRing : MonoBehaviour
- {
- [Header("References"), SerializeField]
- protected ParticleSystem particleRing;
- [Header("Tweaks"), SerializeField]
- protected float radiusThickness = 0.1f;
- [SerializeField]
- protected float startRadius = 0.1f;
- [SerializeField]
- protected float radiusExpansionRate = 1.0f;
- [SerializeField]
- protected float startEmission = 50.0f;
- protected float emissionPerUnitCircumference = 0.0f;
- void OnEnable()
- {
- if (particleRing == null) { return; }
- ParticleSystem.ShapeModule particleShape = particleRing.shape;
- particleShape.radius = startRadius;
- particleShape.radiusThickness = radiusThickness;
- ParticleSystem.EmissionModule particleEmission = particleRing.emission;
- particleEmission.rateOverTime = startEmission;
- emissionPerUnitCircumference = startEmission / (Mathf.PI * startRadius * 2.0f);
- }
- void Update()
- {
- float deltaTime = PhysicsManager.GetDeltaTimeFor(gameObject);
- ParticleSystem.ShapeModule particleShape = particleRing.shape;
- particleShape.radius += radiusExpansionRate * deltaTime;
- particleShape.radiusThickness = radiusThickness; // (resets every time we set radius, I think?)
- ParticleSystem.EmissionModule particleEmission = particleRing.emission;
- particleEmission.rateOverTime = Mathf.PI * particleShape.radius * 2.0f * emissionPerUnitCircumference;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment