using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic; using UnityEngine; using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic; namespace GameLogic.Combat.Skill.MagicSkill { public class XiaoShiAndShow : MagicAttShowBasic { private Vector3 currSize; private Vector3 targetSize; private Vector3 currPos; private Vector3 targetPos; private float currTime; private float moveSpeed; protected bool isUpdateMove; protected override void ProInit() { } protected override void ProSetInfo() { isUpdateMove = false; TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic = _skillBasic.ActivationTimeLineData("sk1_xiaoshi"); timeLineEventLogicGroupBasic.TimeLineUpdateEnd = XiaoShiFinish; } private void XiaoShiFinish() { TimeLineMagicWeaponShowPointSerializtion timeLineMagicWeaponShowPointSerializtion = CombatHeroEntity .combatHeroTimeLineControl .GetTimeLineEventInfo("sk1_show"); if (timeLineMagicWeaponShowPointSerializtion != null) { switch (timeLineMagicWeaponShowPointSerializtion.showPointType) { case TimeLineMagicWeaponShowPointSerializtion.ShowPointType.Head: Vector3 headPos = target.dotPos + new Vector3(0, 5, 0); CombatHeroEntity.combatHeroGameObject.SetPosition(headPos); break; case TimeLineMagicWeaponShowPointSerializtion.ShowPointType.Customize: SpecialDotInfo specialDotInfo = target.GetSpecialDotInfo(timeLineMagicWeaponShowPointSerializtion.customizePointName); CombatHeroEntity.combatHeroGameObject.SetPosition(specialDotInfo.GetWorlPos()); break; } } else { Vector3 headPos = target.dotPos + new Vector3(0, 5, 0); CombatHeroEntity.combatHeroGameObject.SetPosition(headPos); } TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic = _skillBasic.ActivationTimeLineData("sk1_show"); timeLineEventLogicGroupBasic.TimeLineUpdateEnd = ShowFinish; } private void ShowFinish() { TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic = _skillBasic.ActivationTimeLineData("sk1"); if (timeLineEventLogicGroupBasic != null) //有表现.播表现,不需要位移 { timeLineEventLogicGroupBasic.TimeLineUpdateEnd = AllFinish; } else //位移 { currSize = Vector3.one; targetSize = Vector3.one * 2f; currPos = CombatHeroEntity.dotPos; targetPos = target.dotPos; currTime = 0; isUpdateMove = true; } } private void AllFinish() { callBack?.Invoke(); } protected override void ProUpdate(float t) { if (!isUpdateMove) { return; } currTime += t; Vector3 size = Vector3.Lerp(currSize, targetSize, currTime); Vector3 pos = Vector3.Lerp(currPos, targetPos, currTime); CombatHeroEntity.combatHeroGameObject.SetPosition(pos); CombatHeroEntity.combatHeroGameObject.SetScale(size); if(currTime>1) { AllFinish(); } } } }