I am a fairly experiences game dev, and there are a few things that cause it to feel robotic. You clearly have the character programmed to stop on a dime, not incorporating acceleration and deceleration into the movement. This causes the character to feel robotic. This is a good first project though, keep having fun!
Edit - another thing is the jumping, while you probably used the func that checks for a constant player input on the jump, lined up with a timer to create variable jumps, it just doesn't feel good. There should not be a constant speed at any point during the jump because it makes the movement along the y or z axis (depending on your engine) feel very unnatural (this might be intended because its a ghost, but this method is generally not a good idea). There are plenty of tutorials online for proper variable jumping, so I would go have a look. This is still a valiant project though, and I urge you to keep developing!!