Guest User

Untitled

a guest
Feb 9th, 2018
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. public class ExpandingParticleRing : MonoBehaviour
  2. {
  3. [Header("References"), SerializeField]
  4. protected ParticleSystem particleRing;
  5.  
  6. [Header("Tweaks"), SerializeField]
  7. protected float radiusThickness = 0.1f;
  8. [SerializeField]
  9. protected float startRadius = 0.1f;
  10. [SerializeField]
  11. protected float radiusExpansionRate = 1.0f;
  12. [SerializeField]
  13. protected float startEmission = 50.0f;
  14.  
  15. protected float emissionPerUnitCircumference = 0.0f;
  16.  
  17. void OnEnable()
  18. {
  19. if (particleRing == null) { return; }
  20.  
  21. ParticleSystem.ShapeModule particleShape = particleRing.shape;
  22. particleShape.radius = startRadius;
  23. particleShape.radiusThickness = radiusThickness;
  24. ParticleSystem.EmissionModule particleEmission = particleRing.emission;
  25. particleEmission.rateOverTime = startEmission;
  26.  
  27. emissionPerUnitCircumference = startEmission / (Mathf.PI * startRadius * 2.0f);
  28. }
  29.  
  30. void Update()
  31. {
  32. float deltaTime = PhysicsManager.GetDeltaTimeFor(gameObject);
  33.  
  34. ParticleSystem.ShapeModule particleShape = particleRing.shape;
  35. particleShape.radius += radiusExpansionRate * deltaTime;
  36. particleShape.radiusThickness = radiusThickness; // (resets every time we set radius, I think?)
  37.  
  38.  
  39. ParticleSystem.EmissionModule particleEmission = particleRing.emission;
  40. particleEmission.rateOverTime = Mathf.PI * particleShape.radius * 2.0f * emissionPerUnitCircumference;
  41. }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment