| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | using UnityEngine;namespace GameLogic.Combat.Skill.MagicSkill{    public class MoveToTargetPosShow : MagicAttShowBasic    {        protected Vector3 _targetPos;        protected Vector3 _startPos;        private float _currTime;        private float _speed = 30;        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();            }        }    }}
 |