private float GetSpeedMultiplier() { if (speedMax > 0.0f) { var distance = float.PositiveInfinity; SgtHelper.InvokeCalculateDistance(transform.position, ref distance); var distance01 = Mathf.InverseLerp(speedMin * speedRange, speedMax * speedRange, distance); return(Mathf.Lerp(speedMin, speedMax, distance01)); } return(0.0f); }
protected virtual void Update() { var distance = float.PositiveInfinity; SgtHelper.InvokeCalculateDistance(transform.position, ref distance); if (distance < distanceMax) { var distance01 = Mathf.InverseLerp(distanceMin, distanceMax, distance); var drag = Mathf.Lerp(dragMax, dragMin, distance01); var angularDrag = Mathf.Lerp(angularDragMax, angularDragMin, distance01); cachedRigidbody.drag = drag; cachedRigidbody.angularDrag = angularDrag; } else { cachedRigidbody.drag = dragMin; cachedRigidbody.angularDrag = angularDragMin; } }