Open JonasAAA opened 1 month ago
I've noticed this too, I think it's more of an issue for Parry (the collision detection library). What we could do on our side though is to detect the triangle winding order in the collider constructor and flip it if it's clockwise.
The main con of this approach is that the order of the triangle vertices would of course no longer match the given input in those cases, but I think a functional collider is still more important than that, and we can mention it in the documentation anyways. Alternatively, we could just log an error or have a debug assertion for clockwise triangles.
What we could do on our side though is to detect the triangle winding order in the collider constructor and flip it if it's clockwise.
This seems the best approach to me. It could also be worth it to log an info message in case the vertices were swapped, just so the users are aware of this. Since I, for example, just call shape.collider()
without reading the documentation for that particular shape and wouldn't be aware of that.
Versions
bevy 0.13.2 bevy_xpbd_2d 0.4.2
Description
It seems that the collider of a clockwise ordered
Triangle2D
doesn't register collisions with other polygons, such as triangles, rectangles, etc.Example
Below code spawns a triangle with vertices in the clockwise direction and a square. The two shapes are overlapping at spawn, so that should be printed, and shapes should be moved to be disjoint. Neither of these happen.
However, if I swap the triangle vertices so that they are ordered anticlockwise, everything works as expected - I get a message about entities overlapping at spawn, and the shapes are flung out of view very quickly.