Yes you can do it in one FSM if necessary, but example the jump is much better if separated.
Example for the jump:
state 1
- If key down or any other user or ai input
state 2
- jump with physics based object you need to add force, or if not you can use transform translate up for x time
- if detect if the object touch the ground again (to avoid jump again in the air)
it can be raycast, if hit something under the object or collision enter with ground
For the walk, also can use physics (add force) or non physics (translate)
and the swimming can still use these just not need to hit the ground before move up (swim up) and maybe move up with less power than jump