Esempio n. 1
0
    public override Type Tick()
    {
        if (movement.currentTarget)
        {
            return(typeof(AttackState));
        }

        if (movement.ReachedDestination())
        {
            if (walking)
            {
                walking  = false;
                nextWalk = Time.time + waitTime.GenerateRandom();
            }
            else if (nextWalk < Time.time)
            {
                walking           = true;
                movement.useSpeed = 0.6f;
                movement.agent.SetDestination(
                    AIMovement.RandomNavSphere(
                        movement.transform.position,
                        walkRange.GenerateRandom(),
                        -1));
            }
        }

        return(GetType());
    }
Esempio n. 2
0
    public override Type Tick()
    {
        if (!movement.currentTarget)
        {
            //return investigate state
            return(null);
        }

        movement.agent.SetDestination(movement.currentTarget.transform.position);
        if (movement.agent.remainingDistance < attackRange)
        {
            if (nextSwitch < Time.time)
            {
                if (attacking)
                {
                    nextSwitch = Time.time + blockTime.GenerateRandom();
                }
                else
                {
                    nextSwitch = Time.time + attackTime.GenerateRandom();
                    movement.SetBlock(false);
                }
                attacking = !attacking;
            }

            if (attacking)
            {
                movement.SetLightCut();
            }
            else
            {
                movement.SetBlock(true);
            }
        }

        return(GetType());
    }