How can I get a child's boxCollider "corners" (vertices) positions?

Here is the code that is working if my boxCollider has no parent gameObject.

public Vector3[] GetColliderVertexPositions (GameObject obj)  
{
    BoxCollider b = obj.GetComponent<BoxCollider>(); //retrieves the Box Collider of the GameObject called obj
    Vector3[] vertices = new Vector3[8];
    vertices[0] = obj.transform.TransformPoint(b.center + new Vector3(-b.size.x, -b.size.y, -b.size.z) * 0.5f);
    vertices[1] = obj.transform.TransformPoint(b.center + new Vector3(b.size.x, -b.size.y, -b.size.z) * 0.5f);
    vertices[2] = obj.transform.TransformPoint(b.center + new Vector3(b.size.x, -b.size.y, b.size.z) * 0.5f);
    vertices[3] = obj.transform.TransformPoint(b.center + new Vector3(-b.size.x, -b.size.y, b.size.z) * 0.5f);
    vertices[4] = obj.transform.TransformPoint(b.center + new Vector3(-b.size.x, b.size.y, -b.size.z) * 0.5f);
    vertices[5] = obj.transform.TransformPoint(b.center + new Vector3(b.size.x, b.size.y, -b.size.z) * 0.5f);
    vertices[6] = obj.transform.TransformPoint(b.center + new Vector3(b.size.x, b.size.y, b.size.z) * 0.5f);
    vertices[7] = obj.transform.TransformPoint(b.center + new Vector3(-b.size.x, b.size.y, b.size.z) * 0.5f);

    return vertices;
}

If it has a parent and the parent rotated, scaled, etc the above code just not working . What is the fix for this?

Seems okay to me. Are you giving it the correct object?. Even though you add a parent you’ll still need to pass the now child object and not the new parent object.

Here’s a more compact version:

public Mesh cube; // Drag Unity's default cube mesh onto this so then we can borrow its vertices

public Vector3[] GetColliderVertexPositions(GameObject obj)  
{
    BoxCollider b = obj.GetComponent<BoxCollider>(); //retrieves the Box Collider of the GameObject called obj
    Vector3[] vertices = new Vector3[8];
	   for (int i=0;i<8;i++)
		  vertices[i] = obj.transform.TransformPoint(b.center + Vector3.Scale(cube.vertices[i],b.size));
    return vertices;
}