コード例 #1
0
 // 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);
     }
 }
コード例 #2
0
    // 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;
    }
コード例 #3
0
    public void Attack()
    {
        if (grudge.HasTarget())
        {
            HandStamp hand = hands[sample.Next()];

            Transform target = grudge.GetTarget();
            hand.Slam(target.position);
        }
    }
コード例 #4
0
    // 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;
    }