From ca7b565cd73e47a4c83189e35544c892b781cea1 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Tue, 22 Dec 2020 10:00:23 +0800 Subject: [PATCH] 修改拖拽 增加未开启塔位增加红色标记 --- Assets/Scripts/TowerDefense/UI/EndlessBossCtrl.cs | 87 +++++++++++++++++++++++++++---------------- 1 files changed, 55 insertions(+), 32 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/EndlessBossCtrl.cs b/Assets/Scripts/TowerDefense/UI/EndlessBossCtrl.cs index d43990c..e6237b2 100644 --- a/Assets/Scripts/TowerDefense/UI/EndlessBossCtrl.cs +++ b/Assets/Scripts/TowerDefense/UI/EndlessBossCtrl.cs @@ -1,9 +1,8 @@ using DG.Tweening; -using System.Collections; -using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Core.Utilities; +using TowerDefense.Level; /** * 无尽模式boss控制器 @@ -17,7 +16,7 @@ /// <summary> /// boss动作 /// </summary> - public Animator BossAnimator; + private Animator BossAnimator; /// <summary> /// 动作状态 @@ -28,7 +27,11 @@ private string titlePath = "UI/Endless/SkillTitle/"; - public ParticleSystem deadPS, deadMoney; + private ParticleSystem deadPS, deadMoney; + + private string prefabPath = "Prefabs/Boss/Boss_"; + + private GameObject Body; // Start is called before the first frame update private void Start() @@ -37,10 +40,36 @@ EventCenter.Ins.Add<int>((int)KTGMGemClient.EventType.EndlessBossSkillGlintTitle, Glint); } - // Update is called once per frame - private void Update() + private void LateUpdate() { + if (BossAnimator == null) return; + AnimatorStateInfo stateInfo = BossAnimator.GetCurrentAnimatorStateInfo(0); + + if (stateInfo.IsName("Boss_Summon") && stateInfo.normalizedTime >= 1f) + { + EventCenter.Ins.BroadCast((int)EventType.EndlessBossSummonEnd); + // 召唤动作结束后自动切换到站立状态 + ChangeState(EndlessBossActionState.Standing); + } + else if (stateInfo.IsName("Boss_Death") && stateInfo.normalizedTime >= 1f) + { + ClearBoss(); + EndlessLevelManager.instance.WaveManager.HideTunel(); + } + } + + public void ClearBoss() + { + BossAnimator = null; + deadPS = null; + deadMoney = null; + + if (Body != null) + { + Destroy(Body); + Body = null; + } } private void Glint(int skillType) @@ -75,25 +104,6 @@ } /// <summary> - /// 帧事件 - /// </summary> - /// <param name="frameName"></param> - 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); - } - } - - /// <summary> /// 切换状态 /// </summary> /// <param name="newState"></param> @@ -101,18 +111,31 @@ { ActionState = newState; - if (newState == EndlessBossActionState.Standing || newState == EndlessBossActionState.Summon) - BossAnimator.speed = 1; - else if (newState == EndlessBossActionState.Death) + if (newState == EndlessBossActionState.Death) { - //Debug.Log("BOSS死亡特效"); - //播放特效 - deadPS.Play(); - deadMoney.Play(); + deadPS?.Play(); + deadMoney?.Play(); } BossAnimator.SetInteger("State", (int)newState); + } + /// <summary> + /// 刷新boss形象 + /// </summary> + /// <param name="resId"></param> + public void RefreshBody(int resId) + { + GameObject prefab = Resources.Load<GameObject>($"{prefabPath}{resId}"); + if (prefab == null) + { + Debug.LogError($"---- 加载boss资源出错,resId: {resId} ----"); + return; + } + + Body = Instantiate(prefab); + Body.transform.SetParent(transform, false); + BossAnimator = Body.GetComponent<Animator>(); } } } \ No newline at end of file -- Gitblit v1.9.1