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; }
public void Init(SoliderElf owner) { this.owner = owner; }
public void Init(SoliderElf manager) { this.manager = manager; }