public float driverFloat; public float currentFloat; private float Interp(float current, float target, float divisor) { if (target != current) { return current + (target - current)/divisor; } else { return target; } } void Update() { if (isHandAttached) { driverFloat = gameObject.GetComponent().linearMapping.value; currentFloat = gameObject.GetComponent().linearMapping.value; } else { currentFloat = Interp(currentFloat, driverFloat, 10f); gameObject.GetComponent().linearMapping.value = currentFloat; } }