diff --git a/src/physics/PhysicsSolver.cpp b/src/physics/PhysicsSolver.cpp index 834d5389..38fe1544 100644 --- a/src/physics/PhysicsSolver.cpp +++ b/src/physics/PhysicsSolver.cpp @@ -25,7 +25,8 @@ void PhysicsSolver::step( float dt = delta / float(substeps); float linear_damping = hitbox->linear_damping; float s = 2.0f/BLOCK_AABB_GRID; - + + bool prevGrounded = hitbox->grounded; hitbox->grounded = false; for (uint i = 0; i < substeps; i++) { vec3& pos = hitbox->position; @@ -37,7 +38,7 @@ void PhysicsSolver::step( vel += gravity * dt * gravityScale; if (collisions) { colisionCalc(chunks, hitbox, vel, pos, half, - (gravityScale > 0.0f) ? 0.5f : 0.0f); + (prevGrounded && gravityScale > 0.0f) ? 0.5f : 0.0f); } vel.x *= glm::max(0.0f, 1.0f - dt * linear_damping); vel.z *= glm::max(0.0f, 1.0f - dt * linear_damping);