I don't understand why you don't simply use the 8-way move behaviour?
Here, i've made you an example.
The stone is now also solid and is working as you've wished.
The good thing about this behaviour is that you have access to several settings such as:
Acceleration, Deceleration, Max Speed etc...
So rather than coding this all on your own, you can simply change some settings instead.
So here, check it out: