From 6a05b92a9add5eaed3042c1144a07e18b15775f5 Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Fri, 04 Dec 2020 15:49:25 +0800 Subject: [PATCH] 新增几个boss资源 --- Assets/Scripts/TowerDefense/UI/EndlessBossCtrl.cs | 77 ++++++++++++++++++++++---------------- 1 files changed, 45 insertions(+), 32 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/EndlessBossCtrl.cs b/Assets/Scripts/TowerDefense/UI/EndlessBossCtrl.cs index d43990c..d5d696c 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,26 @@ 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) + { + BossAnimator = null; + deadPS = null; + deadMoney = null; + Destroy(Body); + EndlessLevelManager.instance.WaveManager.HideTunel(); + } } private void Glint(int skillType) @@ -75,25 +94,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 +101,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