Tak jak miałeś poprzednio while (!place_meeting(x+sign(hsp),y,obj_Collision)) oraz while (!place_meeting(x,y+sign(vsp),obj_Collision))
Tylko to będzie ci go odbijać od ścian, więc jak chcesz to możesz nad krawędziami zrobić niewidzialny obiekt obj_Collision i od niego by się odbijał.