protected virtual void TryReturnToPosition() { if (transform.localPosition.z <= 0) { var locPos = transform.localPosition; locPos.z = 0; transform.localPosition = locPos; Rb.velocity = Vector3.zero; CurrentState = ButtonState.Idle; } if (Rb.IsSleeping() && !FloatComparer.AreEqual(transform.localPosition.z, _initialLocalPosition.z, 0.000001f)) { transform.localPosition = Vector3.MoveTowards(transform.localPosition, _initialLocalPosition, 0.01f); } }