using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(Particle))] public class Emitter : MonoBehaviour { public float forceBase; public float forceVariance; public float emissionPeriod; public int emissionQuantity; protected Particle particle; protected void Awake() { particle = GetComponent(); } protected void Start() { Invoke("Emit", emissionPeriod); } protected void Emit() { Invoke("Emit", emissionPeriod); if(particle.Tier < 2) return; if(particle.Tier <= particle.gameController.maxTierPresent - 4) return; for(int i = 0; i < emissionQuantity; i++) { GameObject newObject = Instantiate(particle.ParticlePrefab, transform.position, Quaternion.identity); Particle newParticle = newObject.GetComponent(); newParticle.Tier = particle.Tier - 2; Vector3 direction = new Vector3(Mathf.Cos(Mathf.PI * i * 2 / emissionQuantity), Mathf.Sin(Mathf.PI * i / emissionQuantity), 0).normalized; float force = Mathf.Clamp(forceBase + ((Random.value - 0.5f) * forceVariance), 0f, float.PositiveInfinity); newParticle.rigidbody.AddForce(direction * force); } } }