public T[] CheckCollision(Vector2 checkPoint, float checkRadius)
    {
        List <T> objs = new List <T>();

        if (DontHaveChildren())
        {
            foreach (QuadtreeLeaf <T> leaf in _leafs)
            {
                if (Vector2.Distance(checkPoint, leaf.position) <= checkRadius + leaf.radius)
                {
                    objs.Add(leaf.obj);
                }
            }
        }
        else
        {
            if (_upperRightChild._rect.PointToRectDistance(checkPoint, _maxRadius) <= checkRadius)
            {
                objs.AddRange(_upperRightChild.CheckCollision(checkPoint, checkRadius));
            }
            if (_lowerRightChild._rect.PointToRectDistance(checkPoint, _maxRadius) <= checkRadius)
            {
                objs.AddRange(_lowerRightChild.CheckCollision(checkPoint, checkRadius));
            }
            if (_lowerLeftChild._rect.PointToRectDistance(checkPoint, _maxRadius) <= checkRadius)
            {
                objs.AddRange(_lowerLeftChild.CheckCollision(checkPoint, checkRadius));
            }
            if (_upperLeftChild._rect.PointToRectDistance(checkPoint, _maxRadius) <= checkRadius)
            {
                objs.AddRange(_upperLeftChild.CheckCollision(checkPoint, checkRadius));
            }
        }
        return(objs.ToArray());
    }
 public static GameObject[] CheckCollision(Vector2 checkPoint, float checkRadius)
 {
     return(_quadtree.CheckCollision(checkPoint, checkRadius));
 }