Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.x] Improved logic for KinematicBody collision recovery depth #53451

Merged

Conversation

pouleyKetchoupp
Copy link
Contributor

Partial backport of #52953 to fix the same issues in 3.x, without the changes specific to the new CharacterBody node.

The main change is to make collision detection more flexible with different safe margin values.

Kinematic body motion changes in 2D and 3D physics servers:
-Recovery only for depth > min contact depth to help with collision detection consistency (rest info could be lost if recovery was more than min contact depth, which is the threshold for detecting rest info)
-Adaptive min contact depth based on margin, instead of physics space parameter (this is following up from #45259 (comment))


Tested in multiple use cases, no regression found in usual test cases from physics test projects and previous issues.
(similar regression tests as in #52953, but using 3.x projects)


Fixes #36432
Fixes #45259 (now still works when setting a lower safe margin in 2D)
Fixes #50287

Allows more flexible collision detection with different safe margin values.

Kinematic body motion changes in 2D and 3D:
-Recovery only for depth > min contact depth to help with collision
detection consistency (rest info could be lost if recovery was too much)
-Adaptive min contact depth (based on margin) instead of space parameter
@akien-mga akien-mga merged commit a735ff5 into godotengine:3.x Oct 6, 2021
@akien-mga
Copy link
Member

Thanks!

@pouleyKetchoupp pouleyKetchoupp deleted the kinematic-body-recovery-depth-3.x branch October 6, 2021 16:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants