aboutsummaryrefslogtreecommitdiff
path: root/src/control
diff options
context:
space:
mode:
authorJan Nils Ferner <contact@jnferner.com>2023-01-27 14:48:44 +0100
committerJan Nils Ferner <contact@jnferner.com>2023-01-27 14:48:44 +0100
commit7bfa593d3f370afc0fe2f9680d99fa4c7bc0cee1 (patch)
tree64211591fb7bf9ff415a9296d823312eece6c0c9 /src/control
parenteaa3d8e259925903584780f11cbfe7dcc297ac5b (diff)
downloadrapier-7bfa593d3f370afc0fe2f9680d99fa4c7bc0cee1.tar.gz
rapier-7bfa593d3f370afc0fe2f9680d99fa4c7bc0cee1.tar.bz2
rapier-7bfa593d3f370afc0fe2f9680d99fa4c7bc0cee1.zip
Fix slightly incorrect snapping
Diffstat (limited to 'src/control')
-rw-r--r--src/control/character_controller.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/control/character_controller.rs b/src/control/character_controller.rs
index 1b5a792..ec0e04e 100644
--- a/src/control/character_controller.rs
+++ b/src/control/character_controller.rs
@@ -328,20 +328,20 @@ impl KinematicCharacterController {
result: &mut EffectiveCharacterMovement,
) -> Option<(ColliderHandle, TOI)> {
if let Some(snap_distance) = self.snap_to_ground {
- let snap_distance = snap_distance.eval(dims.y);
if result.translation.dot(&self.up) < 1.0e-5 {
- let offset = self.offset.eval(dims.y);
+ let snap_distance = snap_distance.eval(dims.y);
if let Some((hit_handle, hit)) = queries.cast_shape(
bodies,
colliders,
character_pos,
&-self.up,
character_shape,
- snap_distance - offset,
- false,
+ snap_distance,
+ true,
filter,
) {
// Apply the snap.
+ let offset = self.offset.eval(dims.y);
let snap_distance = hit.toi - offset;
if snap_distance.abs() > 1.0e-5 {
result.translation -= *self.up * snap_distance;