using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.CombatTool; using GameLogic.Combat.Hero.State; using UnityEngine; namespace GameLogic.Combat.Hero { public class MagicWeaponIdleState : CombatHeroStateBasic { private CombatMagicWeaponEntity myCombatMagicWeaponEntity; private Vector3 startPos; private Vector3 endPos; private float _addTime; private float _currTime; public MagicWeaponIdleState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity) { myCombatMagicWeaponEntity = combatHeroEntity as CombatMagicWeaponEntity; } protected override void ProEnter() { myCombatMagicWeaponEntity.GameObject.SetActive(true); startPos = myCombatMagicWeaponEntity.MagicWeaponControl.combatHeroEntity.dotPos; endPos = CombatController.currActiveCombat.MagicWeaponCombatSence.myEnterCombatPos; _addTime = 1.0f / (Vector3.Distance(startPos, endPos) / 5); _currTime = 0; } protected override void ProUpdate(float t) { _currTime += t * _addTime; Vector3 pos = Vector3.Lerp(startPos, endPos, _currTime); myCombatMagicWeaponEntity.combatHeroGameObject.SetPosition(pos); if (_currTime >= 1) { myCombatMagicWeaponEntity.isCombatState = true; myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.move); } } protected override void ProExit() { } public override bool IsUpdateLockTarget() { return false; } protected override void ProDispose() { } } }