12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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();
- }
- }
- }
- }
|