天津23维预案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.9 KiB

2 years ago
using UnityEngine;
using System.Collections;
public class OilFlowManage : MonoBehaviour {
private OilReveal oil;
[SerializeField]
private float FlowLateTime =20;
void Start () {
oil = this.transform.Find("Oil").GetComponent<OilReveal>();
}
void Update () {
if (oil.nodeValue >= oil.nodeYMax && !ranYouIsStart)
{
ranYouIsStart = true;
RanYouControl();
StartCoroutine(FireFlow(fireflow[i++], FlowLateTime));
}
}
void DelaySet()
{
transform.localPosition = new Vector3(transform.localPosition.x, transform.localPosition.y, transform.localPosition.z+3);
}
private bool ranYouIsStart;
private void RanYouControl()
{
var ranyou = transform.Find("RanYou");
if (!ranyou.GetComponent<OilSpread>())
ranyou.gameObject.AddComponent<OilSpread>();
ranyou.GetComponent<OilSpread>().oilSpred = true;
}
[SerializeField]
private float flowSpeed = 2;
int i = 0;//火焰的索引
public GameObject[] fireflow;
public GameObject fireDiffusion;
/// <summary>
/// 开启火的流淌
/// </summary>
/// <param name="fireObj">火特效</param>
/// <param name="lateTime">延迟执行</param>
private IEnumerator FireFlow(GameObject fireObj, float lateTime)
{
yield return new WaitForSeconds(lateTime);
if (fireDiffusion)
fireDiffusion.SetActive(true);
if (fireObj)
fireObj.SetActive(true);
if (!fireObj.GetComponent<FireFlow>())
fireObj.AddComponent<FireFlow>();
FireFlow fire = fireObj.GetComponent<FireFlow>();
fire.flowSpeed = flowSpeed;//设置火焰蔓延速度
fire.fireFlow = true;//开始蔓延
if (i < fireflow.Length)//开启全部火焰
StartCoroutine(FireFlow(fireflow[i++], i / (Time.deltaTime * fire.flowSpeed * 10)));
}
}