Exemplo n.º 1
0
    public void Chase()
    {
        if (chaseCooldown <= 0)
        {
            chaseCooldown = chaseDelay;
            return;
        }
        chaseCooldown -= Time.deltaTime;



        Vector3 playerDir = player.transform.position - transform.position;
        float   angle     = Vector3.Angle(transform.forward, playerDir);

        if (angle < fov)
        {
            updatedMaxDistance = maxDistance * MovementTypes.CalcMovementMultiplier(player.GetComponent <PlayerMovement>().movementType);

            RaycastHit hit;

            if (Physics.Raycast(transform.position, playerDir, out hit, updatedMaxDistance))
            {
                if (hit.transform.root.tag != "Player")
                {
                    return;
                }



                Debug.DrawRay(transform.position, playerDir, Color.red);
                isChasing         = true;
                state             = EnemyState.Chasing;
                movementType      = 1;
                lastSight         = player.transform.position;
                agent.destination = lastSight;
            }
        }
        if (transform.position == lastSight)
        {
            isChasing    = false;
            state        = EnemyState.Watching;
            movementType = 0;
        }
    }