mirror of
https://github.com/Steffo99/gravity-fusion.git
synced 2024-11-22 08:24:17 +00:00
36 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|