1
Fork 0
mirror of https://github.com/Steffo99/gravity-fusion.git synced 2024-11-24 17:24:19 +00:00
gravity-fusion/Assets/Components/Emitter.cs
2019-10-06 19:04:47 +02:00

36 lines
1.3 KiB
C#

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<Particle>();
}
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<Particle>();
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);
}
}
}