This problem was mentioned three years ago. A very easy solution is using the ZonePlus module. You can construct a new zone for each swimabble part and trigger the swimming state once the localPlayerEntered event fires.
P.S. It might be a good idea to ditch the BodyVelocity construction in favour of LinearVelocity as it has been quite some time since it has been deprecated.