Fix slightly incorrect snapping

This commit is contained in:
Jan Nils Ferner
2023-01-27 14:48:44 +01:00
parent eaa3d8e259
commit 7bfa593d3f

View File

@@ -328,20 +328,20 @@ impl KinematicCharacterController {
result: &mut EffectiveCharacterMovement, result: &mut EffectiveCharacterMovement,
) -> Option<(ColliderHandle, TOI)> { ) -> Option<(ColliderHandle, TOI)> {
if let Some(snap_distance) = self.snap_to_ground { 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 { 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( if let Some((hit_handle, hit)) = queries.cast_shape(
bodies, bodies,
colliders, colliders,
character_pos, character_pos,
&-self.up, &-self.up,
character_shape, character_shape,
snap_distance - offset, snap_distance,
false, true,
filter, filter,
) { ) {
// Apply the snap. // Apply the snap.
let offset = self.offset.eval(dims.y);
let snap_distance = hit.toi - offset; let snap_distance = hit.toi - offset;
if snap_distance.abs() > 1.0e-5 { if snap_distance.abs() > 1.0e-5 {
result.translation -= *self.up * snap_distance; result.translation -= *self.up * snap_distance;