コード例 #1
0
    bool DetectPlayer()
    {
        //Checking if player is in range.
        var player = Physics.OverlapSphere(transform.position, SightDistance).FirstOrDefault(c => c.CompareTag("Player"));

        if (player == null)
        {
            return(false);
        }

        //Checking if there is a line of sight on the player.
        RaycastHit hit;
        Vector3    direction = (player.transform.position - transform.position).normalized;

        if (!Physics.Raycast(transform.position, direction, out hit, SightDistance))
        {
            return(false);
        }

        if (!hit.transform.CompareTag("Player"))
        {
            return(false);
        }

        if (_haltCooldown <= 0f)
        {
            _aiControl.PlaySighted();
            _haltCooldown = HaltCoolDown;
        }


        Target = player.transform;
        return(true);
    }