I've been working on a behaviour called 'Custom Movement' which is designed to make creating custom movements a lot easier. Its designed so at a simple level you can manually change the speed, horizontal speed, vertical speed, direction of motion, rotation speed of direction, etc (either set, add, accelerate, or decelerate). There's also some useful actions to apply friction, push object out of obstacles, and options for how it moves (jump to new position, move horizontally then vertically, step each pixel, etc). Of course you will be able to disable the moving entirely, and simply use the movement for calculating speed with acceleration and stuff. when I get back from work i'll post a list of actions/conditions/expression for this object and you guys can make any suggestions if its missing anything