public static void MoveDestination(SoliderElf handle)
    {
        if (handle.Target == null)
        {
            return;
        }

        if (!handle.Target.activeSelf)
        {
            handle.Target = null;

            Sequence reback = DOTween.Sequence();
            reback.Append(handle.transform.DOLocalRotate(Vector3.zero, 0.3f));
            reback.AppendCallback(() =>
            {
                handle.State = ElfState.GoStright;
            });

            return;
        }

        Vector3 targetDirection = handle.Target.transform.position - handle.transform.position;
        float   singleStep      = handle.RotateSpeed * Time.deltaTime;
        Vector3 newDirection    = Vector3.RotateTowards(handle.transform.forward, targetDirection, singleStep, 0.0f);

        handle.transform.rotation = Quaternion.LookRotation(newDirection);

        handle.transform.Translate(handle.transform.forward * handle.MoveSpeed * Time.deltaTime);

        float dis = Vector3.Distance(handle.Target.transform.localPosition, handle.transform.localPosition);

        if (dis < (handle.AttackRange / 2f))
        {
            handle.State = ElfState.Attack;
        }
    }
 public static void Idle(SoliderElf handle)
 {
     handle.PlayBornedAnim();
 }
 public static void Dead(SoliderElf handle)
 {
     handle.PlayDead();
 }
 public static void Attack(SoliderElf handle)
 {
     handle.PlayAttack();
 }
 public static void FindEnemy(SoliderElf handle)
 {
     handle.PlayScared();
 }
 public static void MoveStraight(SoliderElf handle)
 {
     handle.transform.Translate(Vector3.forward * handle.MoveSpeed * Time.deltaTime);
 }
 private void resetOriginState(SoliderElf elf)
 {
     elf.Attack      = SoliderElfAttack;
     elf.AttackRange = SoliderElfAttackRange;
     elf.MoveSpeed   = SoliderElfMoveSpeed;
 }
Пример #8
0
 public void Init(SoliderElf owner)
 {
     this.owner = owner;
 }
 public void Init(SoliderElf manager)
 {
     this.manager = manager;
 }