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

37 lines
1.3 KiB
C#
Raw Permalink Normal View History

2019-10-06 13:04:50 +00:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Particle))]
public class Emitter : MonoBehaviour
{
public float forceBase;
public float forceVariance;
2019-10-06 15:44:41 +00:00
public float emissionPeriod;
public int emissionQuantity;
2019-10-06 13:04:50 +00:00
protected Particle particle;
protected void Awake() {
particle = GetComponent<Particle>();
}
protected void Start() {
2019-10-06 15:44:41 +00:00
Invoke("Emit", emissionPeriod);
2019-10-06 13:04:50 +00:00
}
protected void Emit() {
2019-10-06 15:44:41 +00:00
Invoke("Emit", emissionPeriod);
if(particle.Tier < 2) return;
2019-10-06 17:04:47 +00:00
if(particle.Tier <= particle.gameController.maxTierPresent - 4) return;
2019-10-06 15:44:41 +00:00
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);
}
2019-10-06 13:04:50 +00:00
}
}