Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

TechnoGoth

map Scrolling in a 2D game

This topic is 5490 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I'm working on a 2d strategy game using openGL, but I'm unsure as to how to handle scrolling of the map. My GUI looks something like this. -------------- |######***| |######***| |######***| |**********| -------------- # - being the map tiles. * - being various buttons and other parts of the Gui. My problem is should map scrollng be done with keyboard input, mouse input or both. I'd like both but am unsure how to get it work using the mouse. Can anyone offer a suggestion?

Share this post


Link to post
Share on other sites
Advertisement
if the x of the mouse position is >= then screenwidth-10(?) then
xoffset++;

[edited by - ilankt on July 8, 2003 3:30:02 AM]

Share this post


Link to post
Share on other sites
Like Ilankt said, you can either establish a zone on your map, and if the mouse is outside this zone, then scroll in the appropriate direction, or you could just have a set of buttons on your GUI, and scroll when they are pressed, it depends on your needs, but I''d use the first.

(Then you can also scroll at an angle easily, just see if you are in the Top left, Middle left of the border etc.

Share this post


Link to post
Share on other sites
let's pretend you are picking an area near the edge of the screen 8 pixels in width that will be sensitive to scrolling, and the closer to the edge of the screen you are, the more you want the display to scroll.

for x scrolling, you want to scroll to the left when the mousex is less than 8, and to scroll right, the mousex must be greater than or equal to SCREENWIDTH-8

for y scolling, scroll up whenever mousey is less than 8, and scroll down whenever mousey is greater than or equal to SCREENHEIGHT-8

to determine your scroll values:


int GetScroll(int position,int screenmax,int sensitivity)
{
if(position<sensitivity)
{
return(position-sensitivity);
}
else if(position>=screenmax-sensitivity)
{
return(screenmax-position);
}
else
return(0);
}


the function will work for either x or y. to get the particulars:


xscroll=GetScroll(mousex,SCREENWIDTH,8);
yscroll=GetScroll(mousey,SCREENHEIGHT,8);


also, you might want the function to return a floating point value rather than an int, because you may wish to implement an option in your game that specifies a scrolling speed that you would multiply this value by.

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!