Po pierwsze:
direction() - to kierunek w który jest zwrócony objekt, podaje się w stopniach, np. 90 stopni to będzie w górę odwrócony, 0 w prawo, 180 w lewo itd.
x - to kierunek poziomy. Jak będziesz odejmować wartość, to będzie objekt lecieć w lewo, a gdy dodawać, to w prawo.
Dlatego, proponuję tak:
xxx=random(30);
xx=round(xxx);
x-=xx
xxx i xx to zmienne zdefiniowane przeze mnie, a x to położenie objektu na osi x. W zmiennej XXX losuję liczbę z 30, w XX ją zaokrąglam, żeby nie było części dziesiętnych, a w końcowym kodzie, przesuwam objekt o wylosowaną ilość pikseli.
EDIT: Ta pierwsza metoda to przeteleportuje objekt. Teraz ci powiem jak zrobić, żeby się przesunął.
xxx=random(30);
xx=round(xxx);
move_towards_point(x-xx,y,speed);
Myślę, że będzie działać.