using GameLogic.Combat.CombatTool; using UnityEngine; namespace GameLogic.Combat.Hero.State { public class MagicWeaponChuChangState : CombatHeroStateBasic { private CombatMagicWeaponEntity myCombatMagicWeaponEntity; private Vector3 startPos; private Vector3 endPos; private float _addTime; private float _currTime; public MagicWeaponChuChangState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity) { myCombatMagicWeaponEntity = combatHeroEntity as CombatMagicWeaponEntity; } protected override void ProEnter() { myCombatMagicWeaponEntity.GameObject.SetActive(true); startPos = myCombatMagicWeaponEntity.MagicWeaponControl.combatHeroEntity.dotPos; float y = myCombatMagicWeaponEntity.IsEnemy ? 5 : 3; float x = myCombatMagicWeaponEntity.useIndex; endPos = startPos + new Vector3(x, y, 0); _addTime = 1.0f / (Vector3.Distance(startPos, endPos) / 10); _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.idle); } } protected override void ProExit() { } public override bool IsUpdateLockTarget() { return false; } protected override void ProDispose() { } } }