On the go triangle generation and Overlap check

I am looking for some pointers on how to generate triangles in the scene on the go given the information to construct them and check for overlap/collisions with them (ideally in the same physics cycle) and return the relevant data.

To clarify, say I have three points P, Q and R, the vertices of the triangle, in the form of three Vector3 quantities. I want to create a function, or create an Triangular Collider that interfaces with the built in Physics checks and returns the collision/overlap data for all the objects it interfaces with.

I have tried writing my own implementation but while the math behind it is easy, I don’t have enough familiarity with the system itself to make it work. I don’t have a computers background so I don’t know how I can access the mesh data to find the triangles of other objects to check overlap with and my solutions are also not optimized so even if I had it working, it would be very slow for objects with a high poly count.

Any sort of help is appreciated.

@connerdabestoof15 Thanks for the answer.

Using a 2d collider for a 3d scene does seem restrictive but I think I can make it work if it interfaces with 3d colliders properly? Although initializing a completely new object for each triangle does seem like a bit of a performance eater. I guess if it works it’s a serviceable option until I can come up with something better.

public static EdgeCollider2D CreateTriangularCollider(Vector3[] verts, GameObject dummy)
{
	Vector3 planeNormal = CustomMath.MakeUnitVector(CustomMath.CrossProduct(verts[1]-verts[0], verts[2]-verts[1]));
	dummy.GetComponent<Transform>().position = verts[0];
	dummy.GetComponent<Transform>().forward = planeNormal;
	EdgeCollider2D col  = dummy.AddComponent<EdgeCollider2D>();
	Vector2[] triVerts = new Vector2[3];
	for(int i=0; i<3; i++)
	{
		triVerts[i].y = CustomMath.DotProduct(verts[i] - dummy.GetComponent<Transform>().position, dummy.GetComponent<Transform>().up);
		triVerts[i].x = CustomMath.DotProduct(verts[i] - dummy.GetComponent<Transform>().position, dummy.GetComponent<Transform>().right);
	}
	col.points = triVerts;
	return col;
}

This is how I have implemented it, but I have yet to test it.