using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 召唤伊斯兰事件,从伊斯兰隔间演出调用OnCall
///
public class CallYiSiLan : Event
{
///
/// 召唤的伊斯兰的数量
///
[Header("召唤的伊斯兰的数量")]
public int count;
///
/// 伊斯兰预制体
///
[Header("伊斯兰预制体")]
public GameObject yiSiLan;
///
/// 伊斯兰的召唤x范围广度
///
[Header("伊斯兰的召唤x范围广度")]
public float callRange;
///
/// 召唤伊斯兰的位置
///
[Header("召唤伊斯兰的位置")]
private Transform callYiSiLanPosition;
[Header("最短召唤时间间隔")]
public float yiSiLanMinTime;
[Header("最长召唤时间间隔")]
public float yiSiLanMaxTime;
public List yiSiLans;
[Header("结束演出")]
public Stage endStage;
private void Init(){
yiSiLans = new List();
callYiSiLanPosition = GameObject.Find("伊斯兰召唤点").transform;
}
void Update(){
if(yiSiLans.Count > 0){
for(int i = 0; i < yiSiLans.Count; i ++){
if(yiSiLans[i].state == Enemy.State.dead)
yiSiLans.Remove(yiSiLans[i]);
}
}
}
[ContextMenu("OnCall")]
public override void OnCall(){
Init();
StartCoroutine(CallThem());
}
private IEnumerator CallThem(){
for(int i = 0; i < count; i++){
//实例化预制体
YiSiLan yi = Instantiate(
yiSiLan,
callYiSiLanPosition.position + new Vector3(Random.Range(-callRange,callRange),0,0),
Quaternion.identity
).GetComponent();
yiSiLans.Add(yi);
//等待范围内的随机时间
yield return new WaitForSeconds(
Random.Range(yiSiLanMinTime,yiSiLanMaxTime)
);
}
//全部召唤完后,等待玩家打完
yield return new WaitUntil(
() => {
return ((yiSiLans.Count == 0) ? true : false);
}
);
//打完后等待一段反应时间
yield return new WaitForSeconds(2f);
//触发结束演出
endStage.OnCall();
}
}