im just starting with smilebasic today myself, but does your bg objects have bounding boxes? im assuming your player will, lets say your bg object does, and that you bg objects bounding box would be checking y+1(bbox_bottom) and your player would be checking y-1(bbox_top). anyways if these two are true i would set your vspeed to 0, hspeed dont change and add an else statement for moving down