PixelSphinx/Assets/Scripts/Earthquake.cs
2016-04-09 16:11:22 -04:00

75 lines
1.5 KiB
C#

using System;
using UnityEngine;
using System.Collections;
public class Earthquake : MonoBehaviour {
public float CriticalMin;
public float CriticalMax;
public float ExplosionTime;
public GameObject ExplosionParticle;
private const float WaveSpeed = 1f;
private const float WaveOffset = 1.3f;
private SpriteRenderer core;
PlanetManager pmgr;
bool isExploding;
// Use this for initialization
public void Start()
{
isExploding = false;
pmgr = FindObjectOfType<PlanetManager>();
core = this.GetComponent<SpriteRenderer>();
}
// Update is called once per frame
public void Update () {
if(!isExploding) return;
float disbalance = pmgr.GetDisbalance();
float val = Mathf.Clamp((disbalance-CriticalMin) / (CriticalMax-CriticalMin),0,1);
float val2 = Mathf.Clamp((val - 0.6f) / 0.4f, 0, 1);
pmgr.setColor(val2);
core.color = new Color(1f, 1f - val, 1f - val);
if (val2 >= 1f)
{
EarthquakeBoom();
}
}
void OnGUI()
{
if (GUI.Button(new Rect(100, 100, 50, 50), "BOOM"))
{
Debug.Log("Clicked the button with an image");
EarthquakeBoom();
}
}
private void EarthquakeBoom()
{
isExploding = true;
StartCoroutine(Explode());
Instantiate(ExplosionParticle);
}
IEnumerator Explode()
{
float realPosition;
for (float i = 0; i < ExplosionTime; i += Time.deltaTime)
{
realPosition = WaveSpeed * i + WaveOffset;
Debug.Log(realPosition);
pmgr.EjectPlayers(realPosition);
yield return null;
}
}
}