dimforge / rapier

2D and 3D physics engines focused on performance.
https://rapier.rs
Apache License 2.0
3.89k stars 242 forks source link

should allow grounding with no movement counter to the up direction #481

Open ChrisJanssens opened 1 year ago

ChrisJanssens commented 1 year ago

It looks like we are taking the dot product of the movement and up direction here to ensure the vector is negative to the up direction. Is this necessary? I was using grounded to determine when my character controller can "jump". Allowing this value to be zero or lower allows my character controller lateral movement along a collider that is on the opposed side of my character to that of the up direction.

Vrixyz commented 3 months ago

in practice you probably still want to apply a gravity toward the "ground" ? So I'm not sure this matters much ; but an epsilon isn't needed I think indeed.

Vrixyz commented 4 weeks ago

While I think this makes sense, more context about this code can be found here:

The commit message is explicitly about forbidding exactly horizontal movement, I'm not sure wheteher it's fully thought out, or was done only to follow the epsilon "mindset" which was already here before. Tagging @janhohenheim if you're around and able clarify ? 🥺

janhohenheim commented 4 weeks ago

@Vrixyz I remember doing that, but I don't remember my reasoning. Tending towards following the epsilons that were already present. If it's inconvenient, feel free to revert it :)

Vrixyz commented 2 weeks ago

I still agree with this change, but this only adds a fix when snapping is enabled, so we'll need to gather more information about it before validating.

This PR https://github.com/dimforge/rapier/pull/715 explores alternatives (or additions)