using UnityEngine; namespace GameLogic.Combat.Skill.MagicSkill { public class MoveToTargetPosShow : MagicAttShowBasic { protected Vector3 _targetPos; protected Vector3 _startPos; private float _currTime; private float _speed = 15; private float _timeAdd; public void SetTargetPos(Vector3 targetPos) { _targetPos = targetPos; _startPos = _skillBasic.CombatHeroEntity.dotPos; _timeAdd = 1.0f / (Vector3.Distance(_startPos, _targetPos) / _speed); _currTime = 0; _skillBasic.ActivationTimeLineData("run"); } protected override void ProUpdate(float t) { if (!isUpdate) { return; } _currTime += t * _timeAdd; Vector3 lasetPos = _skillBasic.CombatHeroEntity.dotPos; Vector3 p = Vector3.Lerp(_startPos, _targetPos, _currTime); _skillBasic.CombatHeroEntity.combatHeroGameObject.SetPosition(p); Quaternion quaternion = Quaternion.LookRotation((p - lasetPos).normalized); _skillBasic.CombatHeroEntity.GameObject.transform.rotation = Quaternion.Lerp(_skillBasic.CombatHeroEntity.GameObject.transform.rotation, quaternion, 0.5f); if (_currTime >= 1) { isUpdate = false; callBack?.Invoke(); } } } }