godot-box2d
godot-box2d copied to clipboard
Add support for build_mode = segments in CollisionPolygon2D
Describe the bug
Setting build_mode = segments in CollisionPolygon2D does not change its behaviour, while setting up a CollisionShape2D with a ConcavePolygonShape2D inside works as expected. The two behaviours should be the same, as per this documentation page:
https://docs.godotengine.org/en/stable/classes/class_collisionpolygon2d.html#class-collisionpolygon2d-constant-build-segments
Using GodotPhysics2D as the physics engine does not show this bug. Box2D is able to work as expected with ConcavePolygonShape2D, so I suspect there's an issue in the addon.
To Reproduce Steps to reproduce the behavior:
- Create a StaticBody2D with a CollisionPolygon2D node inside
- Add points to the polygon, and have it surround a player-controlled RigidBody2D
- Set the build mode of the CollisionPolygon2D to "segments"
- Test the scene. The RigidBody2D is able to go outside the polygon's boundary (and it should not be)
- Try again by creating a StaticBody2D with a CollisionShape2D inside, with a ConcavePolygonShape2D
- Set up the shape's segments to surround the player body
- Test the scene. The RigidBody2D is now correctly confined within the boundary
Expected behavior CollisionPolygon2D with build_mode = segments should behave as ConcavePolygonShape2D
Project If applicable, add a reproducible project to help explain your problem.
Versions (please complete the following information):
- OS: Linux
- Godot v4.2
- Godot Box2d v0.9.9