diff --git a/src/objects/Player.cpp b/src/objects/Player.cpp index c465e7a3..8b294cb6 100644 --- a/src/objects/Player.cpp +++ b/src/objects/Player.cpp @@ -69,12 +69,14 @@ void Player::update( hitbox->velocity.z += dir.z * speed * delta * 9; } - int substeps = (int)(delta * 1000); - substeps = std::min(100, std::max(0, substeps)); + float vel = std::max(glm::length(hitbox->velocity * 0.25f), 1.0f); + int substeps = int(delta * vel * 1000); + substeps = std::min(100, std::max(1, substeps)); level->physics->step(level->chunks, hitbox, delta, substeps, crouch, flight ? 0.0f : 1.0f, !noclip); + if (flight && hitbox->grounded) { flight = false; }