Basically, I’m trying to trace contours in order to create a collider for a chunk in a 2D block based game, similar to how I’m sure terraria does it. However, some of my vertices fail to verify. I’m not sure why they do this, as the MINIMUM distance that two vertices can have between them is 1 unity unit. It only seems to do it on certain parts of the terrain, however, and never if the terrain is solid rock (AKA just a square with 4 vertices). The maximum distance any two vertices can have between them is 10, as vertices can occupy any integer location from (0,0) to (10, -10). I’ve wondered if it could be due to floating point precision, as these particular “chunks” of blocks are at about 4000x, -16000y. Any advice?
Unity checks vertex spacing before passing to Box2D otherwise Box2D simply asserts. We perform the exact same check Box2D does which is ensure that the square of the distance between two vertex is not less than ‘0.005’ or in Box2D terms, less than ‘0.5 * b2_linearSlop’.
This is the case for BoxCollider2D corners as well as PolygonCollider2D however note that the vertex you specify for your outline path need to be decomposed into convex shapes. During this process, vertex may be created that are closer than in the original path.
If two are already pretty close then rotating them can have an effect as well (for static collider).
Obviously if you scale the collider then this changes how close the vertex are.