// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Init(animator); if (grudge.HasTarget()) { agent.SetDestination(grudge.GetTarget().position); } }
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { if (grudge.HasTarget()) { if (waitTimer >= waitBeforeAttack) { if (fov.IsVisible(grudge.GetTarget())) { animator.SetTrigger("Attack"); } else { animator.SetTrigger("Pursuit"); } } waitTimer += Time.deltaTime; } if (wanderTimer >= wanderPeriod) { agent.SetDestination(RandomDestination()); wanderTimer = 0; } wanderTimer += Time.deltaTime; }
public void Attack() { if (grudge.HasTarget()) { HandStamp hand = hands[sample.Next()]; Transform target = grudge.GetTarget(); hand.Slam(target.position); } }
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { if (timer >= attackDelay) { controller.Attack(); timer = 0; } if (grudge.HasTarget()) { if (!fov.IsVisible(grudge.GetTarget())) { animator.SetTrigger("Pursuit"); } } else { animator.SetTrigger("Wander"); } timer += Time.deltaTime; }