Пример #1
0
    public override void Execute()
    {
        directionAttack = (ranged.enemy_navmesh.transform.position - ranged.player.transform.position).normalized;

        Quaternion lookOnLook = Quaternion.LookRotation(-directionAttack);

        transform.rotation = Quaternion.Slerp(transform.rotation, lookOnLook, 0.5f);

        timer += Time.deltaTime;

        if (search_position)
        {
            randomPos = ranged.player.transform.position + Random.insideUnitSphere * 10;
            if (Vector3.Distance(ranged.player.transform.position, randomPos) > 5)
            {
                search_position = false;
            }
        }

        if (timer < ranged.timeBetweenShots)
        {
            if (!destination_done)
            {
                ranged.enemy_navmesh.SetDestination(randomPos);
                destination_done = true;
            }
        }
        else
        {
            Shoot();
            timer            = 0;
            destination_done = false;
            search_position  = true;
        }


        if (ranged.distanceToPlayer <= ranged.distanceToFlee)
        {
            ranged.ChangeState(ranged.flee);
        }
        else if (ranged.distanceToPlayer <= ranged.distanceToChase && ranged.distanceToPlayer > ranged.distanceToAttack)
        {
            ranged.ChangeState(ranged.chase);
        }
        else if (ranged.distanceToPlayer > ranged.distanceToChase)
        {
            ranged.ChangeState(ranged.patrol);
        }
    }
Пример #2
0
    public override void Execute()
    {
        Vector3 dirToPlayer = transform.position - ranged.player.transform.position;

        Vector3 newpos = transform.position + dirToPlayer;

        ranged.enemy_navmesh.SetDestination(newpos);

        if (ranged.distanceToPlayer <= ranged.distanceToChase && ranged.distanceToPlayer > ranged.distanceToAttack)
        {
            ranged.ChangeState(ranged.chase);
        }
        else if (ranged.distanceToPlayer <= ranged.distanceToAttack && ranged.distanceToPlayer > ranged.distanceToFlee)
        {
            ranged.ChangeState(ranged.attack);
        }
    }
Пример #3
0
    public override void Execute()
    {
        if (ranged.distanceToPlayer > ranged.distanceToAttack)
        {
            ranged.enemy_navmesh.SetDestination(ranged.player.transform.position);
        }

        timer += Time.deltaTime;
        if (ranged.distanceToPlayer <= ranged.distanceToFlee)
        {
            ranged.ChangeState(ranged.flee);
        }
        else if (ranged.distanceToPlayer <= ranged.distanceToAttack && ranged.distanceToPlayer > ranged.distanceToFlee)
        {
            ranged.ChangeState(ranged.attack);
        }
        else if (ranged.distanceToPlayer > ranged.distanceToChase)
        {
            ranged.ChangeState(ranged.patrol);
        }
    }
Пример #4
0
    public override void Execute()
    {
        if (ranged.GetDistance(patrolPoint) < distanceToPoint)
        {
            AssignRandom();
        }

        if (ranged.GetDistance(ranged.player.transform.position) <= ranged.distanceToChase)
        {
            ranged.ChangeState(ranged.chase);
        }
    }
Пример #5
0
    public override void Execute()
    {
        timer += Time.deltaTime;

        if (timer >= timeStaggered)
        {
            if (ranged.currentHealth > 0)
            {
                if (ranged.distanceToPlayer <= ranged.distanceToFlee)
                {
                    ranged.ChangeState(ranged.flee);
                }
                else if (ranged.distanceToPlayer <= ranged.distanceToChase)
                {
                    ranged.ChangeState(ranged.chase);
                }
                else if (ranged.distanceToPlayer > ranged.distanceToChase)
                {
                    ranged.ChangeState(ranged.patrol);
                }
            }
        }
    }