diff --git a/src/graphics/skid_marks.cpp b/src/graphics/skid_marks.cpp index 38b7a8b7f..36b4c651f 100644 --- a/src/graphics/skid_marks.cpp +++ b/src/graphics/skid_marks.cpp @@ -120,7 +120,7 @@ void SkidMarks::update(float dt) } // Currently no skid marking // ------------------------- - if(!m_kart.getControls().m_drift) return; // no skidmarking + if((!m_kart.getControls().m_drift) || (fabsf(m_kart.getControls().m_steer) < 0.001f)) return; // no skidmarking // not turning enough, don't draw skidmarks if kart is going straight ahead // this is even stricter for Ai karts, since they tend to use LOTS of skidding diff --git a/src/karts/kart.cpp b/src/karts/kart.cpp index 663fce219..1bf83e444 100644 --- a/src/karts/kart.cpp +++ b/src/karts/kart.cpp @@ -792,18 +792,23 @@ void Kart::updatePhysics (float dt) } #endif - if(m_controls.m_drift && fabs(m_controls.m_steer) > 0.001f && isOnGround() ) - { - m_skidding += m_kart_properties->getSkidIncrease() - *dt/m_kart_properties->getTimeTillMaxSkid(); - if(m_skidding>m_kart_properties->getMaxSkid()) - m_skidding=m_kart_properties->getMaxSkid(); + if (isOnGround()){ + if((fabs(m_controls.m_steer) > 0.001f) && m_controls.m_drift) + { + m_skidding += m_kart_properties->getSkidIncrease() + *dt/m_kart_properties->getTimeTillMaxSkid(); + if(m_skidding>m_kart_properties->getMaxSkid()) + m_skidding=m_kart_properties->getMaxSkid(); + } + else if(m_skidding>1.0f) + { + m_skidding *= m_kart_properties->getSkidDecrease(); + if(m_skidding<1.0f) m_skidding=1.0f; + } } - else if(m_skidding>1.0f) + else { - m_skidding -= m_kart_properties->getSkidDecrease() - *dt/m_kart_properties->getTimeTillMaxSkid(); - if(m_skidding<1.0f) m_skidding=1.0f; + m_skidding = 1.0f; // Lose any skid factor as soon as we fly } if(m_skidding>1.0f) {