Ejemplo n.º 1
0
    public static Transform FindTarget(Transform exclude, Vector3 start, float range, LayerMask layer, Character character)
    {
        Collider[] nearby = Physics.OverlapSphere (start, range, layer);
        Transform nearest = null;
        float distance = float.MaxValue;

        for (int i = 0; i < nearby.Length; i++) {
            if (nearby[i].transform == exclude || !character.ObjectVisibleFromHeadbone (nearby[i].transform))
                continue;

            Vector3 dirTo = (nearby[i].transform.position - character.transform.position).normalized;
            float relAngle = Vector3.Dot (character.transform.forward, dirTo);
            float view = 1 - (character.ai.fieldOfView / 90f);

            float d = Vector3.Distance (nearby[i].transform.position, start);
            if (d < distance && relAngle > view) {

                distance = d;
                nearest = nearby[i].transform;
            }
        }

        return nearest;
    }