using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Core.Utilities; /** * 无尽模式boss控制器 * @Author: chenxin * @Date: 2020-10-30 16:40:54 */ namespace KTGMGemClient { public class EndlessBossCtrl : Singleton { /// /// boss动作 /// public Animator BossAnimator; /// /// 动作状态 /// public EndlessBossActionState ActionState { get; set; } public Image Title; private string titlePath = "UI/Endless/SkillTitle/"; public ParticleSystem deadPS, deadMoney; // Start is called before the first frame update private void Start() { ColorVal = 0; EventCenter.Ins.Add((int)KTGMGemClient.EventType.EndlessBossSkillGlintTitle, Glint); } // Update is called once per frame private void Update() { } private void Glint(int skillType) { Title.sprite = Resources.Load($"{titlePath}{skillType}"); //设置一个DOTween队列 Sequence flashSeq = DOTween.Sequence(); Color c = Title.color; c.a = 0; Title.color = c; Title.gameObject.SetActive(true); flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 1, 0.3f)); flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 0, 0.15f)); flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 1, 0.3f)); flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 0, 0.15f)); flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 1, 0.3f)); flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 0, 0.15f)); flashSeq.AppendCallback(() => { EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessBossSkillGlintTitleCompleted); }); } private float ColorVal { get { return Title.color.a; } set { Title.gameObject.SetActive(value != 0); Color c = Title.color; c.a = value; Title.color = c; } } /// /// 帧事件 /// /// public void FireAnimationEvent(string frameName) { if (frameName == "summonEnd") { EventCenter.Ins.BroadCast((int)EventType.EndlessBossSummonEnd); // 召唤动作结束后自动切换到站立状态 ChangeState(EndlessBossActionState.Standing); } else if (frameName == "death") { BossAnimator.speed = 0; EventCenter.Ins.BroadCast((int)EventType.EndlessBossDeathActionEnd); } } /// /// 切换状态 /// /// public void ChangeState(EndlessBossActionState newState) { ActionState = newState; if (newState == EndlessBossActionState.Standing || newState == EndlessBossActionState.Summon) BossAnimator.speed = 1; else if (newState == EndlessBossActionState.Death) { //Debug.Log("BOSS死亡特效"); //播放特效 deadPS.Play(); deadMoney.Play(); } BossAnimator.SetInteger("State", (int)newState); } } }