me = self;
    view_yview[0] += ( me.y-(view_hview[0]/2) - view_yview[0]) * 0.1;
    view_xview[0] += ( me.x-(view_wview[0]/2) - view_xview[0]) * 0.3;

This is the code I use to smooth camera movement in game maker. But it's going beyond the room dimensions; showing stuff that shouldn't be shown, as the camera should stop following the player at a point.

How do I achieve this?

  • I suggest that you give far more details than that so people familiar with game-maker can jump in with a proper answer. Per your code snippet, it is a 2D game. But is the camera isometric-positioned? Does the player move in 360 degrees, or 8 directions or 4 directions? Is it grid based? What is the code that is moving the camera? The camera should stop when the player is out of the room? – MAnd Nov 13 '15 at 19:12

Try adding:

view_xview[0] = round(median(0, room_width - view_wview[0] - 1, view_xview[0]));
view_yview[0] = round(median(0, room_height - view_hview[0] - 1, view_yview[0]));

and you need not use me and self:

view_xview[0] += (x - view_wview[0] / 2 - view_xview[0]) * 0.3;
view_yview[0] += (y - view_hview[0] / 2 - view_yview[0]) * 0.1;

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.