No its not broken. It just doesn't do what you want it to. All it is is a movement, and that's all it does.
There are basically four ways to do what you want.
1. An on collision event
This is a trigger once event, meaning it wont trigger it again even if the objects are overlapping.
2. An overlapping event
This is a continuous event, meaning the it will trigger as long as the objects are overlapping.
3.An overlapping at offset event
Same as overlapping, but it only checks one side x, and y. If you want it to check on all 4 sides you will need to add additional conditions for positive x, negative x, positive y, and negative y.
4. Distance(x1,x2,y1,y2) Distance between points
This isn't an event, but an expression. You can use it in a comparison to tell the distance between objects.
>system compare distance(sprite1.x,sprite1.y,sprite2.x,sprite2.y) < 32
-> do this